From: Dmitry Shalnov Date: Thu, 19 Jul 2012 05:16:24 +0000 (+0100) Subject: Initial version X-Git-Url: https://git.shalnoff.com/LED%20tetris/commitdiff_plain/9189c0abd7a1e4b17ad3198a188807f6a3302750?ds=sidebyside Initial version --- 9189c0abd7a1e4b17ad3198a188807f6a3302750 diff --git a/README b/README new file mode 100644 index 0000000..67aeeda --- /dev/null +++ b/README @@ -0,0 +1,13 @@ +INSTALLATION +------------ +Please read wiki to find step by step instrictions + +how to compile and flash it to Arduino: +http://wiki.interplaymedium.org/index.php/InterplayMedium/LEDTetris + +General instructions for Adruino + AXOD microserver integration: +http://wiki.interplaymedium.org/index.php/InterplayMedium/AxonAmpArduino + + + + diff --git a/compiled.eep b/compiled.eep new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/compiled.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/compiled.elf b/compiled.elf new file mode 100755 index 0000000..ef44fca Binary files /dev/null and b/compiled.elf differ diff --git a/compiled.hex b/compiled.hex new file mode 100644 index 0000000..e778121 --- /dev/null +++ b/compiled.hex @@ -0,0 +1,236 @@ +:100000000C9434000C9451000C9451000C94510049 +:100010000C9451000C9451000C9451000C9451001C +:100020000C9451000C9451000C9451000C9451000C +:100030000C9451000C9451000C9451000C945100FC +:100040000C9451000C9451000C9475000C945100C8 +:100050000C9451000C9451000C9451000C945100DC +:100060000C9451000C94510011241FBECFEFD4E02A +:10007000DEBFCDBF11E0A0E0B1E0E2E1FEE002C0F2 +:1000800005900D92AA38B107D9F711E0AAE8B1E0BE +:1000900001C01D92AE39B107E1F70E94C6050C946C +:1000A00007070C940000E1ECF0E080818068808319 +:1000B00008959093C5008093C40086E08093C200A9 +:1000C000E1ECF0E080818861808308958091C00038 +:1000D00087FFFCCF8091C6000895982F8091C000C3 +:1000E00085FFFCCF9093C60008951F920F920FB624 +:1000F0000F9211248F93DF93CF930F92CDB7DEB77A +:100100008091C6008983898180939D010F90CF9152 +:10011000DF918F910F900FBE0F901F901895FC01EB +:1001200007C08091C00085FFFCCF9093C600319638 +:1001300090819923B1F70895CF93DF93EC0128EED6 +:1001400033E0E0E0F0E0CE01B9010E94D206462F94 +:100150008091C00085FFFCCF405D4093C6004053B6 +:10016000C9016AE070E00E94D2063196E430F105E0 +:1001700071F0842F90E0AC01429FC001439F900D2D +:10018000529F900D1124C81BD90B9B01DCCFDF912E +:10019000CF910895DF93CF9300D0CDB7DEB79C0108 +:1001A0000FC01A82198205C089819A8101969A83AB +:1001B000898389819A818B359105B1F7215030402F +:1001C0002115310571F70F900F90CF91DF910895B0 +:1001D000DF93CF9300D0CDB7DEB79C010EC01A825B +:1001E000198205C089819A8101969A8389838981C0 +:1001F0009A810997B9F7215030402115310579F7D7 +:100200000F900F90CF91DF910895DF93CF9300D09F +:10021000CDB7DEB740E02A9A21E030E01A82198299 +:1002200005C089819A8101969A83898389819A81FF +:100230008B359105B1F72150304081F72A9821E0A4 +:1002400030E01A82198205C089819A8101969A83C9 +:10025000898389819A818B359105B1F7215030408E +:1002600081F74F5F4436B9F60F900F90CF91DF9131 +:100270000895DF93CF9300D0CDB7DEB741E050E0D3 +:100280002AC02A9A9A011A82198205C089819A8104 +:1002900001969A83898389819A810997B9F72150B8 +:1002A000304089F72A989A011A82198205C08981FB +:1002B0009A8101969A83898389819A810997B9F7EE +:1002C0002150304089F76F5F6436D9F6465F5F4F43 +:1002D0004932510511F060E0D4CF0F900F90CF91CB +:1002E000DF910895682F27E030E041E050E02C983E +:1002F000CA01022E02C0880F991F0A94E2F78623D2 +:1003000011F02B9A01C02B982C9A215030408FEF7E +:100310002F3F380761F708950F931F93CF93DF9313 +:10032000162F042F2D9821E030E0C82FD0E008C010 +:1003300080E00E94720180E00E94720120E030E0C3 +:10034000C217D307ACF3812F0E947201802F04C023 +:1003500080E00E94720180E00E94720121971C16C9 +:100360001D06B4F32D982D9ADF91CF911F910F9117 +:100370000895482F50E0262F30E0653058F484E08F +:1003800090E0821B930B02C0440F551F8A95E2F741 +:10039000842F08952450304002C0559547952A95E2 +:1003A000E2F7842F08950F931F93CF93DF93C0E05C +:1003B000D0E004E010E080918C01282F30E0C217DB +:1003C000D307ECF0C90103968C179D07C4F0CE014A +:1003D000821B930BE0918401F0E020918B01EE0FE2 +:1003E000FF1FEE0FFF1FE20FF11DEE0FFF1FEE0FBD +:1003F000FF1FE80FF91FEC5CFE4FE08101C0E0E059 +:10040000809185014E2F50E0282F30E0853048F450 +:10041000C801821B930B02C0440F551F8A95E2F757 +:1004200007C02450304002C0559547952A95E2F701 +:10043000CE018F5F682FFE01EE56FE4F8081482B64 +:1004400081E00E948C012196C830D10509F0B3CF1C +:10045000DF91CF911F910F9108951F93CF93DF9359 +:1004600010918501812F90E044E050E0481B590B2A +:10047000EC01249780918C0130918B0120918401B3 +:10048000E22FF0E0EE0FFF1FEE0FFF1FE30FF11D55 +:10049000EE0FFF1FEE0FFF1FEC5CFE4F90E0DC0144 +:1004A000AD56BE4FBC0169567E4F8081282F30E08B +:1004B000153038F4042E02C0220F331F0A94E2F7DD +:1004C00006C00C2E02C0359527950A94E2F78C9150 +:1004D000282311F081E006C031961196A617B707C0 +:1004E00021F780E0DF91CF911F9108951F93CF9363 +:1004F000DF9310918501812F90E044E050E0481B8C +:10050000590BEC01249780918C0130918B01209143 +:100510008401E22FF0E0EE0FFF1FEE0FFF1FE30F4D +:10052000F11DEE0FFF1FEE0FFF1FEC5CFE4F90E082 +:10053000DC01AE56BE4FBC016A567E4F8081282F2B +:1005400030E0153038F4042E02C0220F331F0A9415 +:10055000E2F706C00C2E02C0359527950A94E2F703 +:100560008C91282311F081E006C031961196A617D0 +:10057000B70721F780E0DF91CF911F910895BF92D7 +:10058000CF92DF92EF92FF920F931F93CF93DF935F +:1005900050918501852F90E024E030E06901C81A70 +:1005A000D90A0CEFE02E0FEFF02EE80EF91EB52E53 +:1005B000BA948B2D90E08901081B190BEC0124974C +:1005C00080918C0130918B0120918401E22FF0E029 +:1005D000EE0FFF1FEE0FFF1FE30FF11DEE0FFF1FCA +:1005E000EE0FFF1FEC5CFE4F90E0DC01AE56BE4FFD +:1005F000BC016A567E4F4081242F30E0553038F4DC +:100600000C2C02C0220F331F0A94E2F706C00E2CF6 +:1006100002C0359527950A94E2F727FD1CC0242FC8 +:1006200030E084E08B1538F0002E02C0220F331F1B +:100630000A94E2F706C00C2E02C0359527950A945D +:10064000E2F78C91282339F431961196A617B70753 +:1006500091F680E001C081E0DF91CF911F910F9171 +:10066000FF90EF90DF90CF90BF900895BF92CF9210 +:10067000DF92EF92FF920F931F93CF93DF935091EE +:100680008501852F90E024E030E06901C81AD90A7D +:100690004CEFE42E4FEFF42EE80EF91EB52EB39476 +:1006A0008B2D90E08901081B190BEC012497809198 +:1006B0008C0130918B0120918401E22FF0E0EE0F4C +:1006C000FF1FEE0FFF1FE30FF11DEE0FFF1FEE0FD9 +:1006D000FF1FEC5CFE4F90E0DC01AE56BE4FBC014C +:1006E0006A567E4F4081242F30E0553038F40C2C70 +:1006F00002C0220F331F0A94E2F706C00E2C02C07C +:10070000359527950A94E2F720FD1CC0242F30E090 +:1007100084E08B1538F0002E02C0220F331F0A949C +:10072000E2F706C00C2E02C0359527950A94E2F731 +:100730008C91282339F431961196A617B70791F6B4 +:1007400080E001C081E0DF91CF911F910F91FF9078 +:10075000EF90DF90CF90BF9008950F931F93CF93AA +:10076000DF9380918B01833010F020E002C0282FAE +:100770002F5F5091840140918501842F90E064E0C7 +:1007800070E0681B790B8C010450104080918C0143 +:10079000E52FF0E0EE0FFF1FEE0FFF1FE20FF11D40 +:1007A000EE0FFF1FEE0FFF1FEC5CFE4F90E0DC0131 +:1007B000AE56BE4FEC01CA56DE4F8081282F30E086 +:1007C000453038F4062E02C0220F331F0A94E2F798 +:1007D00006C0002E02C0359527950A94E2F75130E5 +:1007E00031F0523011F0533029F4413099F0483053 +:1007F00039F410C0543021F4423061F0473051F0E8 +:100800008C91282339F431961196AC17BD07A9F6BF +:1008100080E001C081E0DF91CF911F910F91089599 +:10082000CF92DF92EF92FF920F931F93DF93CF93BC +:1008300000D0CDB7DEB780918C01B7E0EB2EE82277 +:10084000E39400E010E0869586958695C82EC394C3 +:10085000D02E80918C01F801E80FF11DE830F105F0 +:100860000CF06BC0EE56FE4F80818F3F09F065C0E3 +:10087000FF248C2D6E2D40E00E948C0128EE33E089 +:100880001A82198205C089819A8101969A83898387 +:1008900089819A818B359105B1F72150304081F7DC +:1008A0008C2D6E2D4FEF0E948C0128EE33E01A82C2 +:1008B000198205C089819A8101969A8389838981E9 +:1008C0009A818B359105B1F72150304081F7F3942F +:1008D00083E0F81671F690918C019D0D08C0E92F08 +:1008E000F0E0EE56FE4F829131968083915099232D +:1008F000B1F70E943901E0E0F1E007C08091C0004B +:1009000085FFFCCF9093C600319690819923B1F773 +:10091000809186018F5F8093860181500E949C00A8 +:10092000E8E0F1E007C08091C00085FFFCCF909324 +:10093000C600319690819923B1F70F5F1F4FE39462 +:100940000430110509F084CF0F900F90CF91DF9103 +:100950001F910F91FF90EF90DF90CF900895AF928D +:10096000BF92CF92DF92FF920F931F93DF93CF93AB +:1009700000D000D00F92CDB7DEB7DE011396E7E8C6 +:10098000F1E083E001900D928150E1F710E01F5FEC +:1009900081E0612F4FEF0E948C0124EF31E01A8239 +:1009A000198205C089819A8101969A8389838981F8 +:1009B0009A818B359105B1F72150304081F718307D +:1009C00031F702E911E0FF24F39481E06F2D40E05C +:1009D0000E948C01F801108224EF31E01A82198202 +:1009E00005C089819A8101969A83898389819A8138 +:1009F0008B359105B1F72150304081F70F5F1F4FC4 +:100A0000F8E0FF1609F7FF2413E0A12EB12CAC0E7D +:100A1000BD1E32C000E010E0CF2CDD24202F2F5F60 +:100A2000C8018C0D9D1D63E070E00E94D206F501A7 +:100A3000E80FF91F81E0622F40810E948C010F5F57 +:100A40001F4F0830110551F781E08F1510F4FF2476 +:100A500001C0F39428EE33E01A82198205C089811F +:100A60009A8101969A83898389819A818B35910530 +:100A7000B1F72150304081F780919D01882351F2D8 +:100A800081E080938601E2E1F1E007C08091C0003F +:100A900085FFFCCF9093C600319690819923B1F7E2 +:100AA00080918D0190918E0165E070E00E94BE06FC +:100AB0008093840110928B010F900F900F900F90F4 +:100AC0000F90CF91DF911F910F91FF90DF90CF900A +:100AD000BF90AF9008951F93CF93DF93109185013E +:100AE000812F90E044E050E0481B590BEC01249723 +:100AF00080918C0130918B0120918401E22FF0E0F4 +:100B0000EE0FFF1FEE0FFF1FE30FF11DEE0FFF1F94 +:100B1000EE0FFF1FEC5CFE4F90E0DC01AE56BE4FC7 +:100B2000BC016A567E4F8081282F30E0153038F4A2 +:100B3000042E02C0220F331F0A94E2F706C00C2EC7 +:100B400002C0359527950A94E2F78C91822B8D93FC +:100B50003196A617B70739F70E94100410928C013E +:100B600010928B0184E080938501809191018093A4 +:100B700084010E947602813019F00E94D30102C0E4 +:100B80000E94AF04DF91CF911F9108951F93239A84 +:100B9000259A249A229A81E06091310147E00E94CF +:100BA0008C0181E060912F0140E00E948C0181E086 +:100BB0006091320141E00E948C0181E0609133013B +:100BC00040E00E948C0110E01F5F81E0612F40E057 +:100BD0000E948C011830C1F781E0609130014FE034 +:100BE0000E948C0187E690E09093C5008093C4003A +:100BF00086E08093C2008091C10088618093C1002B +:100C00008091C10080688093C10078948FEF8093B9 +:100C10009A0180918D01837080938401E2E1F1E07B +:100C200007C08091C00085FFFCCF9093C60031962D +:100C300090819923B1F760918D0170918E0180911F +:100C40008F019091900120E23EE440E050E00E944C +:100C5000E506611571058105910509F50E94D3012D +:100C60000E942D02813031F080918C018F5F809342 +:100C70008C0115C090919B0180919101981719F4F6 +:100C80009F5F9093910180919101863010F01092B6 +:100C900091018091910180939B010E946B052091AD +:100CA0008D0130918E0140918F01509190012F5F05 +:100CB0003F4F4F4F5F4F20938D0130938E014093F4 +:100CC0008F015093900190919D0180919C01981704 +:100CD00009F4B1CF80919D0180939C01822F837094 +:100CE0008093910180919D01833469F40E943603C1 +:100CF000813029F0809185018F5F809385010E946A +:100D0000D3010E94050180919D01843469F40E9401 +:100D1000BF02813029F08091850181508093850147 +:100D20000E94D3010E94050180919D01823469F4E3 +:100D30000E942D02813029F080918C018F5F809379 +:100D40008C010E94D3010E94050180919D01813494 +:100D500091F40E94AD03813071F080918B0183305A +:100D600020F48F5F80938B0102C010928B010E9450 +:100D7000D3010E94050110929D015DCFAA1BBB1BF0 +:100D800051E107C0AA1FBB1FA617B70710F0A61B8B +:100D9000B70B881F991F5A95A9F780959095BC01AC +:100DA000CD01089597FB092E07260AD077FD04D0C0 +:100DB000E5DF06D000201AF4709561957F4F089505 +:100DC000F6F7909581959F4F0895A1E21A2EAA1BE0 +:100DD000BB1BFD010DC0AA1FBB1FEE1FFF1FA217EB +:100DE000B307E407F50720F0A21BB30BE40BF50BE8 +:100DF000661F771F881F991F1A9469F76095709571 +:100E0000809590959B01AC01BD01CF010895F894A8 +:020E1000FFCF12 +:100E120053636F72653A200020202020202020207A +:100E22000D0053636F72653A20303030302020203D +:100E320020202020200D00010203040506070809D6 +:100E42000A0B0C0F181800001818000018180000E0 +:100E52001818000030180000103020003018000070 +:100E62001030200000380800181010002038000050 +:100E72001010300010380000103010000038100040 +:100E820010181000003C000010101010003C000070 +:0A0E9200101010100404012492490E +:00000001FF diff --git a/compiled.lss b/compiled.lss new file mode 100644 index 0000000..57e0d88 --- /dev/null +++ b/compiled.lss @@ -0,0 +1,1716 @@ + +compiled.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 0000008a 00800100 00000e12 00000ea6 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00000e12 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000014 0080018a 0080018a 00000f30 2**0 + ALLOC + 3 .stab 000006b4 00000000 00000000 00000f30 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00000054 00000000 00000000 000015e4 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 48: 0c 94 75 00 jmp 0xea ; 0xea <__vector_18> + 4c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d4 e0 ldi r29, 0x04 ; 4 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 74: 11 e0 ldi r17, 0x01 ; 1 + 76: a0 e0 ldi r26, 0x00 ; 0 + 78: b1 e0 ldi r27, 0x01 ; 1 + 7a: e2 e1 ldi r30, 0x12 ; 18 + 7c: fe e0 ldi r31, 0x0E ; 14 + 7e: 02 c0 rjmp .+4 ; 0x84 <.do_copy_data_start> + +00000080 <.do_copy_data_loop>: + 80: 05 90 lpm r0, Z+ + 82: 0d 92 st X+, r0 + +00000084 <.do_copy_data_start>: + 84: aa 38 cpi r26, 0x8A ; 138 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <.do_copy_data_loop> + +0000008a <__do_clear_bss>: + 8a: 11 e0 ldi r17, 0x01 ; 1 + 8c: aa e8 ldi r26, 0x8A ; 138 + 8e: b1 e0 ldi r27, 0x01 ; 1 + 90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> + +00000092 <.do_clear_bss_loop>: + 92: 1d 92 st X+, r1 + +00000094 <.do_clear_bss_start>: + 94: ae 39 cpi r26, 0x9E ; 158 + 96: b1 07 cpc r27, r17 + 98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> + 9a: 0e 94 c6 05 call 0xb8c ; 0xb8c
+ 9e: 0c 94 07 07 jmp 0xe0e ; 0xe0e <_exit> + +000000a2 <__bad_interrupt>: + a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000a6 : + a6: e1 ec ldi r30, 0xC1 ; 193 + a8: f0 e0 ldi r31, 0x00 ; 0 + aa: 80 81 ld r24, Z + ac: 80 68 ori r24, 0x80 ; 128 + ae: 80 83 st Z, r24 + b0: 08 95 ret + +000000b2 : + b2: 90 93 c5 00 sts 0x00C5, r25 + b6: 80 93 c4 00 sts 0x00C4, r24 + ba: 86 e0 ldi r24, 0x06 ; 6 + bc: 80 93 c2 00 sts 0x00C2, r24 + c0: e1 ec ldi r30, 0xC1 ; 193 + c2: f0 e0 ldi r31, 0x00 ; 0 + c4: 80 81 ld r24, Z + c6: 88 61 ori r24, 0x18 ; 24 + c8: 80 83 st Z, r24 + ca: 08 95 ret + +000000cc : + cc: 80 91 c0 00 lds r24, 0x00C0 + d0: 87 ff sbrs r24, 7 + d2: fc cf rjmp .-8 ; 0xcc + d4: 80 91 c6 00 lds r24, 0x00C6 + d8: 08 95 ret + +000000da : + da: 98 2f mov r25, r24 + dc: 80 91 c0 00 lds r24, 0x00C0 + e0: 85 ff sbrs r24, 5 + e2: fc cf rjmp .-8 ; 0xdc + e4: 90 93 c6 00 sts 0x00C6, r25 + e8: 08 95 ret + +000000ea <__vector_18>: + ea: 1f 92 push r1 + ec: 0f 92 push r0 + ee: 0f b6 in r0, 0x3f ; 63 + f0: 0f 92 push r0 + f2: 11 24 eor r1, r1 + f4: 8f 93 push r24 + f6: df 93 push r29 + f8: cf 93 push r28 + fa: 0f 92 push r0 + fc: cd b7 in r28, 0x3d ; 61 + fe: de b7 in r29, 0x3e ; 62 + 100: 80 91 c6 00 lds r24, 0x00C6 + 104: 89 83 std Y+1, r24 ; 0x01 + 106: 89 81 ldd r24, Y+1 ; 0x01 + 108: 80 93 9d 01 sts 0x019D, r24 + 10c: 0f 90 pop r0 + 10e: cf 91 pop r28 + 110: df 91 pop r29 + 112: 8f 91 pop r24 + 114: 0f 90 pop r0 + 116: 0f be out 0x3f, r0 ; 63 + 118: 0f 90 pop r0 + 11a: 1f 90 pop r1 + 11c: 18 95 reti + +0000011e : + 11e: fc 01 movw r30, r24 + 120: 07 c0 rjmp .+14 ; 0x130 + 122: 80 91 c0 00 lds r24, 0x00C0 + 126: 85 ff sbrs r24, 5 + 128: fc cf rjmp .-8 ; 0x122 + 12a: 90 93 c6 00 sts 0x00C6, r25 + 12e: 31 96 adiw r30, 0x01 ; 1 + 130: 90 81 ld r25, Z + 132: 99 23 and r25, r25 + 134: b1 f7 brne .-20 ; 0x122 + 136: 08 95 ret + +00000138 : + 138: cf 93 push r28 + 13a: df 93 push r29 + 13c: ec 01 movw r28, r24 + 13e: 28 ee ldi r18, 0xE8 ; 232 + 140: 33 e0 ldi r19, 0x03 ; 3 + 142: e0 e0 ldi r30, 0x00 ; 0 + 144: f0 e0 ldi r31, 0x00 ; 0 + 146: ce 01 movw r24, r28 + 148: b9 01 movw r22, r18 + 14a: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + 14e: 46 2f mov r20, r22 + 150: 80 91 c0 00 lds r24, 0x00C0 + 154: 85 ff sbrs r24, 5 + 156: fc cf rjmp .-8 ; 0x150 + 158: 40 5d subi r20, 0xD0 ; 208 + 15a: 40 93 c6 00 sts 0x00C6, r20 + 15e: 40 53 subi r20, 0x30 ; 48 + 160: c9 01 movw r24, r18 + 162: 6a e0 ldi r22, 0x0A ; 10 + 164: 70 e0 ldi r23, 0x00 ; 0 + 166: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + 16a: 31 96 adiw r30, 0x01 ; 1 + 16c: e4 30 cpi r30, 0x04 ; 4 + 16e: f1 05 cpc r31, r1 + 170: 71 f0 breq .+28 ; 0x18e + 172: 84 2f mov r24, r20 + 174: 90 e0 ldi r25, 0x00 ; 0 + 176: ac 01 movw r20, r24 + 178: 42 9f mul r20, r18 + 17a: c0 01 movw r24, r0 + 17c: 43 9f mul r20, r19 + 17e: 90 0d add r25, r0 + 180: 52 9f mul r21, r18 + 182: 90 0d add r25, r0 + 184: 11 24 eor r1, r1 + 186: c8 1b sub r28, r24 + 188: d9 0b sbc r29, r25 + 18a: 9b 01 movw r18, r22 + 18c: dc cf rjmp .-72 ; 0x146 + 18e: df 91 pop r29 + 190: cf 91 pop r28 + 192: 08 95 ret + +00000194 : + 194: df 93 push r29 + 196: cf 93 push r28 + 198: 00 d0 rcall .+0 ; 0x19a + 19a: cd b7 in r28, 0x3d ; 61 + 19c: de b7 in r29, 0x3e ; 62 + 19e: 9c 01 movw r18, r24 + 1a0: 0f c0 rjmp .+30 ; 0x1c0 + 1a2: 1a 82 std Y+2, r1 ; 0x02 + 1a4: 19 82 std Y+1, r1 ; 0x01 + 1a6: 05 c0 rjmp .+10 ; 0x1b2 + 1a8: 89 81 ldd r24, Y+1 ; 0x01 + 1aa: 9a 81 ldd r25, Y+2 ; 0x02 + 1ac: 01 96 adiw r24, 0x01 ; 1 + 1ae: 9a 83 std Y+2, r25 ; 0x02 + 1b0: 89 83 std Y+1, r24 ; 0x01 + 1b2: 89 81 ldd r24, Y+1 ; 0x01 + 1b4: 9a 81 ldd r25, Y+2 ; 0x02 + 1b6: 8b 35 cpi r24, 0x5B ; 91 + 1b8: 91 05 cpc r25, r1 + 1ba: b1 f7 brne .-20 ; 0x1a8 + 1bc: 21 50 subi r18, 0x01 ; 1 + 1be: 30 40 sbci r19, 0x00 ; 0 + 1c0: 21 15 cp r18, r1 + 1c2: 31 05 cpc r19, r1 + 1c4: 71 f7 brne .-36 ; 0x1a2 + 1c6: 0f 90 pop r0 + 1c8: 0f 90 pop r0 + 1ca: cf 91 pop r28 + 1cc: df 91 pop r29 + 1ce: 08 95 ret + +000001d0 : + 1d0: df 93 push r29 + 1d2: cf 93 push r28 + 1d4: 00 d0 rcall .+0 ; 0x1d6 + 1d6: cd b7 in r28, 0x3d ; 61 + 1d8: de b7 in r29, 0x3e ; 62 + 1da: 9c 01 movw r18, r24 + 1dc: 0e c0 rjmp .+28 ; 0x1fa + 1de: 1a 82 std Y+2, r1 ; 0x02 + 1e0: 19 82 std Y+1, r1 ; 0x01 + 1e2: 05 c0 rjmp .+10 ; 0x1ee + 1e4: 89 81 ldd r24, Y+1 ; 0x01 + 1e6: 9a 81 ldd r25, Y+2 ; 0x02 + 1e8: 01 96 adiw r24, 0x01 ; 1 + 1ea: 9a 83 std Y+2, r25 ; 0x02 + 1ec: 89 83 std Y+1, r24 ; 0x01 + 1ee: 89 81 ldd r24, Y+1 ; 0x01 + 1f0: 9a 81 ldd r25, Y+2 ; 0x02 + 1f2: 09 97 sbiw r24, 0x09 ; 9 + 1f4: b9 f7 brne .-18 ; 0x1e4 + 1f6: 21 50 subi r18, 0x01 ; 1 + 1f8: 30 40 sbci r19, 0x00 ; 0 + 1fa: 21 15 cp r18, r1 + 1fc: 31 05 cpc r19, r1 + 1fe: 79 f7 brne .-34 ; 0x1de + 200: 0f 90 pop r0 + 202: 0f 90 pop r0 + 204: cf 91 pop r28 + 206: df 91 pop r29 + 208: 08 95 ret + +0000020a : + 20a: df 93 push r29 + 20c: cf 93 push r28 + 20e: 00 d0 rcall .+0 ; 0x210 + 210: cd b7 in r28, 0x3d ; 61 + 212: de b7 in r29, 0x3e ; 62 + 214: 40 e0 ldi r20, 0x00 ; 0 + 216: 2a 9a sbi 0x05, 2 ; 5 + 218: 21 e0 ldi r18, 0x01 ; 1 + 21a: 30 e0 ldi r19, 0x00 ; 0 + 21c: 1a 82 std Y+2, r1 ; 0x02 + 21e: 19 82 std Y+1, r1 ; 0x01 + 220: 05 c0 rjmp .+10 ; 0x22c + 222: 89 81 ldd r24, Y+1 ; 0x01 + 224: 9a 81 ldd r25, Y+2 ; 0x02 + 226: 01 96 adiw r24, 0x01 ; 1 + 228: 9a 83 std Y+2, r25 ; 0x02 + 22a: 89 83 std Y+1, r24 ; 0x01 + 22c: 89 81 ldd r24, Y+1 ; 0x01 + 22e: 9a 81 ldd r25, Y+2 ; 0x02 + 230: 8b 35 cpi r24, 0x5B ; 91 + 232: 91 05 cpc r25, r1 + 234: b1 f7 brne .-20 ; 0x222 + 236: 21 50 subi r18, 0x01 ; 1 + 238: 30 40 sbci r19, 0x00 ; 0 + 23a: 81 f7 brne .-32 ; 0x21c + 23c: 2a 98 cbi 0x05, 2 ; 5 + 23e: 21 e0 ldi r18, 0x01 ; 1 + 240: 30 e0 ldi r19, 0x00 ; 0 + 242: 1a 82 std Y+2, r1 ; 0x02 + 244: 19 82 std Y+1, r1 ; 0x01 + 246: 05 c0 rjmp .+10 ; 0x252 + 248: 89 81 ldd r24, Y+1 ; 0x01 + 24a: 9a 81 ldd r25, Y+2 ; 0x02 + 24c: 01 96 adiw r24, 0x01 ; 1 + 24e: 9a 83 std Y+2, r25 ; 0x02 + 250: 89 83 std Y+1, r24 ; 0x01 + 252: 89 81 ldd r24, Y+1 ; 0x01 + 254: 9a 81 ldd r25, Y+2 ; 0x02 + 256: 8b 35 cpi r24, 0x5B ; 91 + 258: 91 05 cpc r25, r1 + 25a: b1 f7 brne .-20 ; 0x248 + 25c: 21 50 subi r18, 0x01 ; 1 + 25e: 30 40 sbci r19, 0x00 ; 0 + 260: 81 f7 brne .-32 ; 0x242 + 262: 4f 5f subi r20, 0xFF ; 255 + 264: 44 36 cpi r20, 0x64 ; 100 + 266: b9 f6 brne .-82 ; 0x216 + 268: 0f 90 pop r0 + 26a: 0f 90 pop r0 + 26c: cf 91 pop r28 + 26e: df 91 pop r29 + 270: 08 95 ret + +00000272 : + 272: df 93 push r29 + 274: cf 93 push r28 + 276: 00 d0 rcall .+0 ; 0x278 + 278: cd b7 in r28, 0x3d ; 61 + 27a: de b7 in r29, 0x3e ; 62 + 27c: 41 e0 ldi r20, 0x01 ; 1 + 27e: 50 e0 ldi r21, 0x00 ; 0 + 280: 2a c0 rjmp .+84 ; 0x2d6 + 282: 2a 9a sbi 0x05, 2 ; 5 + 284: 9a 01 movw r18, r20 + 286: 1a 82 std Y+2, r1 ; 0x02 + 288: 19 82 std Y+1, r1 ; 0x01 + 28a: 05 c0 rjmp .+10 ; 0x296 + 28c: 89 81 ldd r24, Y+1 ; 0x01 + 28e: 9a 81 ldd r25, Y+2 ; 0x02 + 290: 01 96 adiw r24, 0x01 ; 1 + 292: 9a 83 std Y+2, r25 ; 0x02 + 294: 89 83 std Y+1, r24 ; 0x01 + 296: 89 81 ldd r24, Y+1 ; 0x01 + 298: 9a 81 ldd r25, Y+2 ; 0x02 + 29a: 09 97 sbiw r24, 0x09 ; 9 + 29c: b9 f7 brne .-18 ; 0x28c + 29e: 21 50 subi r18, 0x01 ; 1 + 2a0: 30 40 sbci r19, 0x00 ; 0 + 2a2: 89 f7 brne .-30 ; 0x286 + 2a4: 2a 98 cbi 0x05, 2 ; 5 + 2a6: 9a 01 movw r18, r20 + 2a8: 1a 82 std Y+2, r1 ; 0x02 + 2aa: 19 82 std Y+1, r1 ; 0x01 + 2ac: 05 c0 rjmp .+10 ; 0x2b8 + 2ae: 89 81 ldd r24, Y+1 ; 0x01 + 2b0: 9a 81 ldd r25, Y+2 ; 0x02 + 2b2: 01 96 adiw r24, 0x01 ; 1 + 2b4: 9a 83 std Y+2, r25 ; 0x02 + 2b6: 89 83 std Y+1, r24 ; 0x01 + 2b8: 89 81 ldd r24, Y+1 ; 0x01 + 2ba: 9a 81 ldd r25, Y+2 ; 0x02 + 2bc: 09 97 sbiw r24, 0x09 ; 9 + 2be: b9 f7 brne .-18 ; 0x2ae + 2c0: 21 50 subi r18, 0x01 ; 1 + 2c2: 30 40 sbci r19, 0x00 ; 0 + 2c4: 89 f7 brne .-30 ; 0x2a8 + 2c6: 6f 5f subi r22, 0xFF ; 255 + 2c8: 64 36 cpi r22, 0x64 ; 100 + 2ca: d9 f6 brne .-74 ; 0x282 + 2cc: 46 5f subi r20, 0xF6 ; 246 + 2ce: 5f 4f sbci r21, 0xFF ; 255 + 2d0: 49 32 cpi r20, 0x29 ; 41 + 2d2: 51 05 cpc r21, r1 + 2d4: 11 f0 breq .+4 ; 0x2da + 2d6: 60 e0 ldi r22, 0x00 ; 0 + 2d8: d4 cf rjmp .-88 ; 0x282 + 2da: 0f 90 pop r0 + 2dc: 0f 90 pop r0 + 2de: cf 91 pop r28 + 2e0: df 91 pop r29 + 2e2: 08 95 ret + +000002e4 : + 2e4: 68 2f mov r22, r24 + 2e6: 27 e0 ldi r18, 0x07 ; 7 + 2e8: 30 e0 ldi r19, 0x00 ; 0 + 2ea: 41 e0 ldi r20, 0x01 ; 1 + 2ec: 50 e0 ldi r21, 0x00 ; 0 + 2ee: 2c 98 cbi 0x05, 4 ; 5 + 2f0: ca 01 movw r24, r20 + 2f2: 02 2e mov r0, r18 + 2f4: 02 c0 rjmp .+4 ; 0x2fa + 2f6: 88 0f add r24, r24 + 2f8: 99 1f adc r25, r25 + 2fa: 0a 94 dec r0 + 2fc: e2 f7 brpl .-8 ; 0x2f6 + 2fe: 86 23 and r24, r22 + 300: 11 f0 breq .+4 ; 0x306 + 302: 2b 9a sbi 0x05, 3 ; 5 + 304: 01 c0 rjmp .+2 ; 0x308 + 306: 2b 98 cbi 0x05, 3 ; 5 + 308: 2c 9a sbi 0x05, 4 ; 5 + 30a: 21 50 subi r18, 0x01 ; 1 + 30c: 30 40 sbci r19, 0x00 ; 0 + 30e: 8f ef ldi r24, 0xFF ; 255 + 310: 2f 3f cpi r18, 0xFF ; 255 + 312: 38 07 cpc r19, r24 + 314: 61 f7 brne .-40 ; 0x2ee + 316: 08 95 ret + +00000318 : + 318: 0f 93 push r16 + 31a: 1f 93 push r17 + 31c: cf 93 push r28 + 31e: df 93 push r29 + 320: 16 2f mov r17, r22 + 322: 04 2f mov r16, r20 + 324: 2d 98 cbi 0x05, 5 ; 5 + 326: 21 e0 ldi r18, 0x01 ; 1 + 328: 30 e0 ldi r19, 0x00 ; 0 + 32a: c8 2f mov r28, r24 + 32c: d0 e0 ldi r29, 0x00 ; 0 + 32e: 08 c0 rjmp .+16 ; 0x340 + 330: 80 e0 ldi r24, 0x00 ; 0 + 332: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 336: 80 e0 ldi r24, 0x00 ; 0 + 338: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 33c: 20 e0 ldi r18, 0x00 ; 0 + 33e: 30 e0 ldi r19, 0x00 ; 0 + 340: c2 17 cp r28, r18 + 342: d3 07 cpc r29, r19 + 344: ac f3 brlt .-22 ; 0x330 + 346: 81 2f mov r24, r17 + 348: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 34c: 80 2f mov r24, r16 + 34e: 04 c0 rjmp .+8 ; 0x358 + 350: 80 e0 ldi r24, 0x00 ; 0 + 352: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 356: 80 e0 ldi r24, 0x00 ; 0 + 358: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 35c: 21 97 sbiw r28, 0x01 ; 1 + 35e: 1c 16 cp r1, r28 + 360: 1d 06 cpc r1, r29 + 362: b4 f3 brlt .-20 ; 0x350 + 364: 2d 98 cbi 0x05, 5 ; 5 + 366: 2d 9a sbi 0x05, 5 ; 5 + 368: df 91 pop r29 + 36a: cf 91 pop r28 + 36c: 1f 91 pop r17 + 36e: 0f 91 pop r16 + 370: 08 95 ret + +00000372 : + 372: 48 2f mov r20, r24 + 374: 50 e0 ldi r21, 0x00 ; 0 + 376: 26 2f mov r18, r22 + 378: 30 e0 ldi r19, 0x00 ; 0 + 37a: 65 30 cpi r22, 0x05 ; 5 + 37c: 58 f4 brcc .+22 ; 0x394 + 37e: 84 e0 ldi r24, 0x04 ; 4 + 380: 90 e0 ldi r25, 0x00 ; 0 + 382: 82 1b sub r24, r18 + 384: 93 0b sbc r25, r19 + 386: 02 c0 rjmp .+4 ; 0x38c + 388: 44 0f add r20, r20 + 38a: 55 1f adc r21, r21 + 38c: 8a 95 dec r24 + 38e: e2 f7 brpl .-8 ; 0x388 + 390: 84 2f mov r24, r20 + 392: 08 95 ret + 394: 24 50 subi r18, 0x04 ; 4 + 396: 30 40 sbci r19, 0x00 ; 0 + 398: 02 c0 rjmp .+4 ; 0x39e + 39a: 55 95 asr r21 + 39c: 47 95 ror r20 + 39e: 2a 95 dec r18 + 3a0: e2 f7 brpl .-8 ; 0x39a + 3a2: 84 2f mov r24, r20 + 3a4: 08 95 ret + +000003a6 : + 3a6: 0f 93 push r16 + 3a8: 1f 93 push r17 + 3aa: cf 93 push r28 + 3ac: df 93 push r29 + 3ae: c0 e0 ldi r28, 0x00 ; 0 + 3b0: d0 e0 ldi r29, 0x00 ; 0 + 3b2: 04 e0 ldi r16, 0x04 ; 4 + 3b4: 10 e0 ldi r17, 0x00 ; 0 + 3b6: 80 91 8c 01 lds r24, 0x018C + 3ba: 28 2f mov r18, r24 + 3bc: 30 e0 ldi r19, 0x00 ; 0 + 3be: c2 17 cp r28, r18 + 3c0: d3 07 cpc r29, r19 + 3c2: ec f0 brlt .+58 ; 0x3fe + 3c4: c9 01 movw r24, r18 + 3c6: 03 96 adiw r24, 0x03 ; 3 + 3c8: 8c 17 cp r24, r28 + 3ca: 9d 07 cpc r25, r29 + 3cc: c4 f0 brlt .+48 ; 0x3fe + 3ce: ce 01 movw r24, r28 + 3d0: 82 1b sub r24, r18 + 3d2: 93 0b sbc r25, r19 + 3d4: e0 91 84 01 lds r30, 0x0184 + 3d8: f0 e0 ldi r31, 0x00 ; 0 + 3da: 20 91 8b 01 lds r18, 0x018B + 3de: ee 0f add r30, r30 + 3e0: ff 1f adc r31, r31 + 3e2: ee 0f add r30, r30 + 3e4: ff 1f adc r31, r31 + 3e6: e2 0f add r30, r18 + 3e8: f1 1d adc r31, r1 + 3ea: ee 0f add r30, r30 + 3ec: ff 1f adc r31, r31 + 3ee: ee 0f add r30, r30 + 3f0: ff 1f adc r31, r31 + 3f2: e8 0f add r30, r24 + 3f4: f9 1f adc r31, r25 + 3f6: ec 5c subi r30, 0xCC ; 204 + 3f8: fe 4f sbci r31, 0xFE ; 254 + 3fa: e0 81 ld r30, Z + 3fc: 01 c0 rjmp .+2 ; 0x400 + 3fe: e0 e0 ldi r30, 0x00 ; 0 + 400: 80 91 85 01 lds r24, 0x0185 + 404: 4e 2f mov r20, r30 + 406: 50 e0 ldi r21, 0x00 ; 0 + 408: 28 2f mov r18, r24 + 40a: 30 e0 ldi r19, 0x00 ; 0 + 40c: 85 30 cpi r24, 0x05 ; 5 + 40e: 48 f4 brcc .+18 ; 0x422 + 410: c8 01 movw r24, r16 + 412: 82 1b sub r24, r18 + 414: 93 0b sbc r25, r19 + 416: 02 c0 rjmp .+4 ; 0x41c + 418: 44 0f add r20, r20 + 41a: 55 1f adc r21, r21 + 41c: 8a 95 dec r24 + 41e: e2 f7 brpl .-8 ; 0x418 + 420: 07 c0 rjmp .+14 ; 0x430 + 422: 24 50 subi r18, 0x04 ; 4 + 424: 30 40 sbci r19, 0x00 ; 0 + 426: 02 c0 rjmp .+4 ; 0x42c + 428: 55 95 asr r21 + 42a: 47 95 ror r20 + 42c: 2a 95 dec r18 + 42e: e2 f7 brpl .-8 ; 0x428 + 430: ce 01 movw r24, r28 + 432: 8f 5f subi r24, 0xFF ; 255 + 434: 68 2f mov r22, r24 + 436: fe 01 movw r30, r28 + 438: ee 56 subi r30, 0x6E ; 110 + 43a: fe 4f sbci r31, 0xFE ; 254 + 43c: 80 81 ld r24, Z + 43e: 48 2b or r20, r24 + 440: 81 e0 ldi r24, 0x01 ; 1 + 442: 0e 94 8c 01 call 0x318 ; 0x318 + 446: 21 96 adiw r28, 0x01 ; 1 + 448: c8 30 cpi r28, 0x08 ; 8 + 44a: d1 05 cpc r29, r1 + 44c: 09 f0 breq .+2 ; 0x450 + 44e: b3 cf rjmp .-154 ; 0x3b6 + 450: df 91 pop r29 + 452: cf 91 pop r28 + 454: 1f 91 pop r17 + 456: 0f 91 pop r16 + 458: 08 95 ret + +0000045a : + 45a: 1f 93 push r17 + 45c: cf 93 push r28 + 45e: df 93 push r29 + 460: 10 91 85 01 lds r17, 0x0185 + 464: 81 2f mov r24, r17 + 466: 90 e0 ldi r25, 0x00 ; 0 + 468: 44 e0 ldi r20, 0x04 ; 4 + 46a: 50 e0 ldi r21, 0x00 ; 0 + 46c: 48 1b sub r20, r24 + 46e: 59 0b sbc r21, r25 + 470: ec 01 movw r28, r24 + 472: 24 97 sbiw r28, 0x04 ; 4 + 474: 80 91 8c 01 lds r24, 0x018C + 478: 30 91 8b 01 lds r19, 0x018B + 47c: 20 91 84 01 lds r18, 0x0184 + 480: e2 2f mov r30, r18 + 482: f0 e0 ldi r31, 0x00 ; 0 + 484: ee 0f add r30, r30 + 486: ff 1f adc r31, r31 + 488: ee 0f add r30, r30 + 48a: ff 1f adc r31, r31 + 48c: e3 0f add r30, r19 + 48e: f1 1d adc r31, r1 + 490: ee 0f add r30, r30 + 492: ff 1f adc r31, r31 + 494: ee 0f add r30, r30 + 496: ff 1f adc r31, r31 + 498: ec 5c subi r30, 0xCC ; 204 + 49a: fe 4f sbci r31, 0xFE ; 254 + 49c: 90 e0 ldi r25, 0x00 ; 0 + 49e: dc 01 movw r26, r24 + 4a0: ad 56 subi r26, 0x6D ; 109 + 4a2: be 4f sbci r27, 0xFE ; 254 + 4a4: bc 01 movw r22, r24 + 4a6: 69 56 subi r22, 0x69 ; 105 + 4a8: 7e 4f sbci r23, 0xFE ; 254 + 4aa: 80 81 ld r24, Z + 4ac: 28 2f mov r18, r24 + 4ae: 30 e0 ldi r19, 0x00 ; 0 + 4b0: 15 30 cpi r17, 0x05 ; 5 + 4b2: 38 f4 brcc .+14 ; 0x4c2 + 4b4: 04 2e mov r0, r20 + 4b6: 02 c0 rjmp .+4 ; 0x4bc + 4b8: 22 0f add r18, r18 + 4ba: 33 1f adc r19, r19 + 4bc: 0a 94 dec r0 + 4be: e2 f7 brpl .-8 ; 0x4b8 + 4c0: 06 c0 rjmp .+12 ; 0x4ce + 4c2: 0c 2e mov r0, r28 + 4c4: 02 c0 rjmp .+4 ; 0x4ca + 4c6: 35 95 asr r19 + 4c8: 27 95 ror r18 + 4ca: 0a 94 dec r0 + 4cc: e2 f7 brpl .-8 ; 0x4c6 + 4ce: 8c 91 ld r24, X + 4d0: 28 23 and r18, r24 + 4d2: 11 f0 breq .+4 ; 0x4d8 + 4d4: 81 e0 ldi r24, 0x01 ; 1 + 4d6: 06 c0 rjmp .+12 ; 0x4e4 + 4d8: 31 96 adiw r30, 0x01 ; 1 + 4da: 11 96 adiw r26, 0x01 ; 1 + 4dc: a6 17 cp r26, r22 + 4de: b7 07 cpc r27, r23 + 4e0: 21 f7 brne .-56 ; 0x4aa + 4e2: 80 e0 ldi r24, 0x00 ; 0 + 4e4: df 91 pop r29 + 4e6: cf 91 pop r28 + 4e8: 1f 91 pop r17 + 4ea: 08 95 ret + +000004ec : + 4ec: 1f 93 push r17 + 4ee: cf 93 push r28 + 4f0: df 93 push r29 + 4f2: 10 91 85 01 lds r17, 0x0185 + 4f6: 81 2f mov r24, r17 + 4f8: 90 e0 ldi r25, 0x00 ; 0 + 4fa: 44 e0 ldi r20, 0x04 ; 4 + 4fc: 50 e0 ldi r21, 0x00 ; 0 + 4fe: 48 1b sub r20, r24 + 500: 59 0b sbc r21, r25 + 502: ec 01 movw r28, r24 + 504: 24 97 sbiw r28, 0x04 ; 4 + 506: 80 91 8c 01 lds r24, 0x018C + 50a: 30 91 8b 01 lds r19, 0x018B + 50e: 20 91 84 01 lds r18, 0x0184 + 512: e2 2f mov r30, r18 + 514: f0 e0 ldi r31, 0x00 ; 0 + 516: ee 0f add r30, r30 + 518: ff 1f adc r31, r31 + 51a: ee 0f add r30, r30 + 51c: ff 1f adc r31, r31 + 51e: e3 0f add r30, r19 + 520: f1 1d adc r31, r1 + 522: ee 0f add r30, r30 + 524: ff 1f adc r31, r31 + 526: ee 0f add r30, r30 + 528: ff 1f adc r31, r31 + 52a: ec 5c subi r30, 0xCC ; 204 + 52c: fe 4f sbci r31, 0xFE ; 254 + 52e: 90 e0 ldi r25, 0x00 ; 0 + 530: dc 01 movw r26, r24 + 532: ae 56 subi r26, 0x6E ; 110 + 534: be 4f sbci r27, 0xFE ; 254 + 536: bc 01 movw r22, r24 + 538: 6a 56 subi r22, 0x6A ; 106 + 53a: 7e 4f sbci r23, 0xFE ; 254 + 53c: 80 81 ld r24, Z + 53e: 28 2f mov r18, r24 + 540: 30 e0 ldi r19, 0x00 ; 0 + 542: 15 30 cpi r17, 0x05 ; 5 + 544: 38 f4 brcc .+14 ; 0x554 <__stack+0x55> + 546: 04 2e mov r0, r20 + 548: 02 c0 rjmp .+4 ; 0x54e <__stack+0x4f> + 54a: 22 0f add r18, r18 + 54c: 33 1f adc r19, r19 + 54e: 0a 94 dec r0 + 550: e2 f7 brpl .-8 ; 0x54a <__stack+0x4b> + 552: 06 c0 rjmp .+12 ; 0x560 <__stack+0x61> + 554: 0c 2e mov r0, r28 + 556: 02 c0 rjmp .+4 ; 0x55c <__stack+0x5d> + 558: 35 95 asr r19 + 55a: 27 95 ror r18 + 55c: 0a 94 dec r0 + 55e: e2 f7 brpl .-8 ; 0x558 <__stack+0x59> + 560: 8c 91 ld r24, X + 562: 28 23 and r18, r24 + 564: 11 f0 breq .+4 ; 0x56a <__stack+0x6b> + 566: 81 e0 ldi r24, 0x01 ; 1 + 568: 06 c0 rjmp .+12 ; 0x576 <__stack+0x77> + 56a: 31 96 adiw r30, 0x01 ; 1 + 56c: 11 96 adiw r26, 0x01 ; 1 + 56e: a6 17 cp r26, r22 + 570: b7 07 cpc r27, r23 + 572: 21 f7 brne .-56 ; 0x53c <__stack+0x3d> + 574: 80 e0 ldi r24, 0x00 ; 0 + 576: df 91 pop r29 + 578: cf 91 pop r28 + 57a: 1f 91 pop r17 + 57c: 08 95 ret + +0000057e : + 57e: bf 92 push r11 + 580: cf 92 push r12 + 582: df 92 push r13 + 584: ef 92 push r14 + 586: ff 92 push r15 + 588: 0f 93 push r16 + 58a: 1f 93 push r17 + 58c: cf 93 push r28 + 58e: df 93 push r29 + 590: 50 91 85 01 lds r21, 0x0185 + 594: 85 2f mov r24, r21 + 596: 90 e0 ldi r25, 0x00 ; 0 + 598: 24 e0 ldi r18, 0x04 ; 4 + 59a: 30 e0 ldi r19, 0x00 ; 0 + 59c: 69 01 movw r12, r18 + 59e: c8 1a sub r12, r24 + 5a0: d9 0a sbc r13, r25 + 5a2: 0c ef ldi r16, 0xFC ; 252 + 5a4: e0 2e mov r14, r16 + 5a6: 0f ef ldi r16, 0xFF ; 255 + 5a8: f0 2e mov r15, r16 + 5aa: e8 0e add r14, r24 + 5ac: f9 1e adc r15, r25 + 5ae: b5 2e mov r11, r21 + 5b0: ba 94 dec r11 + 5b2: 8b 2d mov r24, r11 + 5b4: 90 e0 ldi r25, 0x00 ; 0 + 5b6: 89 01 movw r16, r18 + 5b8: 08 1b sub r16, r24 + 5ba: 19 0b sbc r17, r25 + 5bc: ec 01 movw r28, r24 + 5be: 24 97 sbiw r28, 0x04 ; 4 + 5c0: 80 91 8c 01 lds r24, 0x018C + 5c4: 30 91 8b 01 lds r19, 0x018B + 5c8: 20 91 84 01 lds r18, 0x0184 + 5cc: e2 2f mov r30, r18 + 5ce: f0 e0 ldi r31, 0x00 ; 0 + 5d0: ee 0f add r30, r30 + 5d2: ff 1f adc r31, r31 + 5d4: ee 0f add r30, r30 + 5d6: ff 1f adc r31, r31 + 5d8: e3 0f add r30, r19 + 5da: f1 1d adc r31, r1 + 5dc: ee 0f add r30, r30 + 5de: ff 1f adc r31, r31 + 5e0: ee 0f add r30, r30 + 5e2: ff 1f adc r31, r31 + 5e4: ec 5c subi r30, 0xCC ; 204 + 5e6: fe 4f sbci r31, 0xFE ; 254 + 5e8: 90 e0 ldi r25, 0x00 ; 0 + 5ea: dc 01 movw r26, r24 + 5ec: ae 56 subi r26, 0x6E ; 110 + 5ee: be 4f sbci r27, 0xFE ; 254 + 5f0: bc 01 movw r22, r24 + 5f2: 6a 56 subi r22, 0x6A ; 106 + 5f4: 7e 4f sbci r23, 0xFE ; 254 + 5f6: 40 81 ld r20, Z + 5f8: 24 2f mov r18, r20 + 5fa: 30 e0 ldi r19, 0x00 ; 0 + 5fc: 55 30 cpi r21, 0x05 ; 5 + 5fe: 38 f4 brcc .+14 ; 0x60e + 600: 0c 2c mov r0, r12 + 602: 02 c0 rjmp .+4 ; 0x608 + 604: 22 0f add r18, r18 + 606: 33 1f adc r19, r19 + 608: 0a 94 dec r0 + 60a: e2 f7 brpl .-8 ; 0x604 + 60c: 06 c0 rjmp .+12 ; 0x61a + 60e: 0e 2c mov r0, r14 + 610: 02 c0 rjmp .+4 ; 0x616 + 612: 35 95 asr r19 + 614: 27 95 ror r18 + 616: 0a 94 dec r0 + 618: e2 f7 brpl .-8 ; 0x612 + 61a: 27 fd sbrc r18, 7 + 61c: 1c c0 rjmp .+56 ; 0x656 + 61e: 24 2f mov r18, r20 + 620: 30 e0 ldi r19, 0x00 ; 0 + 622: 84 e0 ldi r24, 0x04 ; 4 + 624: 8b 15 cp r24, r11 + 626: 38 f0 brcs .+14 ; 0x636 + 628: 00 2e mov r0, r16 + 62a: 02 c0 rjmp .+4 ; 0x630 + 62c: 22 0f add r18, r18 + 62e: 33 1f adc r19, r19 + 630: 0a 94 dec r0 + 632: e2 f7 brpl .-8 ; 0x62c + 634: 06 c0 rjmp .+12 ; 0x642 + 636: 0c 2e mov r0, r28 + 638: 02 c0 rjmp .+4 ; 0x63e + 63a: 35 95 asr r19 + 63c: 27 95 ror r18 + 63e: 0a 94 dec r0 + 640: e2 f7 brpl .-8 ; 0x63a + 642: 8c 91 ld r24, X + 644: 28 23 and r18, r24 + 646: 39 f4 brne .+14 ; 0x656 + 648: 31 96 adiw r30, 0x01 ; 1 + 64a: 11 96 adiw r26, 0x01 ; 1 + 64c: a6 17 cp r26, r22 + 64e: b7 07 cpc r27, r23 + 650: 91 f6 brne .-92 ; 0x5f6 + 652: 80 e0 ldi r24, 0x00 ; 0 + 654: 01 c0 rjmp .+2 ; 0x658 + 656: 81 e0 ldi r24, 0x01 ; 1 + 658: df 91 pop r29 + 65a: cf 91 pop r28 + 65c: 1f 91 pop r17 + 65e: 0f 91 pop r16 + 660: ff 90 pop r15 + 662: ef 90 pop r14 + 664: df 90 pop r13 + 666: cf 90 pop r12 + 668: bf 90 pop r11 + 66a: 08 95 ret + +0000066c : + 66c: bf 92 push r11 + 66e: cf 92 push r12 + 670: df 92 push r13 + 672: ef 92 push r14 + 674: ff 92 push r15 + 676: 0f 93 push r16 + 678: 1f 93 push r17 + 67a: cf 93 push r28 + 67c: df 93 push r29 + 67e: 50 91 85 01 lds r21, 0x0185 + 682: 85 2f mov r24, r21 + 684: 90 e0 ldi r25, 0x00 ; 0 + 686: 24 e0 ldi r18, 0x04 ; 4 + 688: 30 e0 ldi r19, 0x00 ; 0 + 68a: 69 01 movw r12, r18 + 68c: c8 1a sub r12, r24 + 68e: d9 0a sbc r13, r25 + 690: 4c ef ldi r20, 0xFC ; 252 + 692: e4 2e mov r14, r20 + 694: 4f ef ldi r20, 0xFF ; 255 + 696: f4 2e mov r15, r20 + 698: e8 0e add r14, r24 + 69a: f9 1e adc r15, r25 + 69c: b5 2e mov r11, r21 + 69e: b3 94 inc r11 + 6a0: 8b 2d mov r24, r11 + 6a2: 90 e0 ldi r25, 0x00 ; 0 + 6a4: 89 01 movw r16, r18 + 6a6: 08 1b sub r16, r24 + 6a8: 19 0b sbc r17, r25 + 6aa: ec 01 movw r28, r24 + 6ac: 24 97 sbiw r28, 0x04 ; 4 + 6ae: 80 91 8c 01 lds r24, 0x018C + 6b2: 30 91 8b 01 lds r19, 0x018B + 6b6: 20 91 84 01 lds r18, 0x0184 + 6ba: e2 2f mov r30, r18 + 6bc: f0 e0 ldi r31, 0x00 ; 0 + 6be: ee 0f add r30, r30 + 6c0: ff 1f adc r31, r31 + 6c2: ee 0f add r30, r30 + 6c4: ff 1f adc r31, r31 + 6c6: e3 0f add r30, r19 + 6c8: f1 1d adc r31, r1 + 6ca: ee 0f add r30, r30 + 6cc: ff 1f adc r31, r31 + 6ce: ee 0f add r30, r30 + 6d0: ff 1f adc r31, r31 + 6d2: ec 5c subi r30, 0xCC ; 204 + 6d4: fe 4f sbci r31, 0xFE ; 254 + 6d6: 90 e0 ldi r25, 0x00 ; 0 + 6d8: dc 01 movw r26, r24 + 6da: ae 56 subi r26, 0x6E ; 110 + 6dc: be 4f sbci r27, 0xFE ; 254 + 6de: bc 01 movw r22, r24 + 6e0: 6a 56 subi r22, 0x6A ; 106 + 6e2: 7e 4f sbci r23, 0xFE ; 254 + 6e4: 40 81 ld r20, Z + 6e6: 24 2f mov r18, r20 + 6e8: 30 e0 ldi r19, 0x00 ; 0 + 6ea: 55 30 cpi r21, 0x05 ; 5 + 6ec: 38 f4 brcc .+14 ; 0x6fc + 6ee: 0c 2c mov r0, r12 + 6f0: 02 c0 rjmp .+4 ; 0x6f6 + 6f2: 22 0f add r18, r18 + 6f4: 33 1f adc r19, r19 + 6f6: 0a 94 dec r0 + 6f8: e2 f7 brpl .-8 ; 0x6f2 + 6fa: 06 c0 rjmp .+12 ; 0x708 + 6fc: 0e 2c mov r0, r14 + 6fe: 02 c0 rjmp .+4 ; 0x704 + 700: 35 95 asr r19 + 702: 27 95 ror r18 + 704: 0a 94 dec r0 + 706: e2 f7 brpl .-8 ; 0x700 + 708: 20 fd sbrc r18, 0 + 70a: 1c c0 rjmp .+56 ; 0x744 + 70c: 24 2f mov r18, r20 + 70e: 30 e0 ldi r19, 0x00 ; 0 + 710: 84 e0 ldi r24, 0x04 ; 4 + 712: 8b 15 cp r24, r11 + 714: 38 f0 brcs .+14 ; 0x724 + 716: 00 2e mov r0, r16 + 718: 02 c0 rjmp .+4 ; 0x71e + 71a: 22 0f add r18, r18 + 71c: 33 1f adc r19, r19 + 71e: 0a 94 dec r0 + 720: e2 f7 brpl .-8 ; 0x71a + 722: 06 c0 rjmp .+12 ; 0x730 + 724: 0c 2e mov r0, r28 + 726: 02 c0 rjmp .+4 ; 0x72c + 728: 35 95 asr r19 + 72a: 27 95 ror r18 + 72c: 0a 94 dec r0 + 72e: e2 f7 brpl .-8 ; 0x728 + 730: 8c 91 ld r24, X + 732: 28 23 and r18, r24 + 734: 39 f4 brne .+14 ; 0x744 + 736: 31 96 adiw r30, 0x01 ; 1 + 738: 11 96 adiw r26, 0x01 ; 1 + 73a: a6 17 cp r26, r22 + 73c: b7 07 cpc r27, r23 + 73e: 91 f6 brne .-92 ; 0x6e4 + 740: 80 e0 ldi r24, 0x00 ; 0 + 742: 01 c0 rjmp .+2 ; 0x746 + 744: 81 e0 ldi r24, 0x01 ; 1 + 746: df 91 pop r29 + 748: cf 91 pop r28 + 74a: 1f 91 pop r17 + 74c: 0f 91 pop r16 + 74e: ff 90 pop r15 + 750: ef 90 pop r14 + 752: df 90 pop r13 + 754: cf 90 pop r12 + 756: bf 90 pop r11 + 758: 08 95 ret + +0000075a : + 75a: 0f 93 push r16 + 75c: 1f 93 push r17 + 75e: cf 93 push r28 + 760: df 93 push r29 + 762: 80 91 8b 01 lds r24, 0x018B + 766: 83 30 cpi r24, 0x03 ; 3 + 768: 10 f0 brcs .+4 ; 0x76e + 76a: 20 e0 ldi r18, 0x00 ; 0 + 76c: 02 c0 rjmp .+4 ; 0x772 + 76e: 28 2f mov r18, r24 + 770: 2f 5f subi r18, 0xFF ; 255 + 772: 50 91 84 01 lds r21, 0x0184 + 776: 40 91 85 01 lds r20, 0x0185 + 77a: 84 2f mov r24, r20 + 77c: 90 e0 ldi r25, 0x00 ; 0 + 77e: 64 e0 ldi r22, 0x04 ; 4 + 780: 70 e0 ldi r23, 0x00 ; 0 + 782: 68 1b sub r22, r24 + 784: 79 0b sbc r23, r25 + 786: 8c 01 movw r16, r24 + 788: 04 50 subi r16, 0x04 ; 4 + 78a: 10 40 sbci r17, 0x00 ; 0 + 78c: 80 91 8c 01 lds r24, 0x018C + 790: e5 2f mov r30, r21 + 792: f0 e0 ldi r31, 0x00 ; 0 + 794: ee 0f add r30, r30 + 796: ff 1f adc r31, r31 + 798: ee 0f add r30, r30 + 79a: ff 1f adc r31, r31 + 79c: e2 0f add r30, r18 + 79e: f1 1d adc r31, r1 + 7a0: ee 0f add r30, r30 + 7a2: ff 1f adc r31, r31 + 7a4: ee 0f add r30, r30 + 7a6: ff 1f adc r31, r31 + 7a8: ec 5c subi r30, 0xCC ; 204 + 7aa: fe 4f sbci r31, 0xFE ; 254 + 7ac: 90 e0 ldi r25, 0x00 ; 0 + 7ae: dc 01 movw r26, r24 + 7b0: ae 56 subi r26, 0x6E ; 110 + 7b2: be 4f sbci r27, 0xFE ; 254 + 7b4: ec 01 movw r28, r24 + 7b6: ca 56 subi r28, 0x6A ; 106 + 7b8: de 4f sbci r29, 0xFE ; 254 + 7ba: 80 81 ld r24, Z + 7bc: 28 2f mov r18, r24 + 7be: 30 e0 ldi r19, 0x00 ; 0 + 7c0: 45 30 cpi r20, 0x05 ; 5 + 7c2: 38 f4 brcc .+14 ; 0x7d2 + 7c4: 06 2e mov r0, r22 + 7c6: 02 c0 rjmp .+4 ; 0x7cc + 7c8: 22 0f add r18, r18 + 7ca: 33 1f adc r19, r19 + 7cc: 0a 94 dec r0 + 7ce: e2 f7 brpl .-8 ; 0x7c8 + 7d0: 06 c0 rjmp .+12 ; 0x7de + 7d2: 00 2e mov r0, r16 + 7d4: 02 c0 rjmp .+4 ; 0x7da + 7d6: 35 95 asr r19 + 7d8: 27 95 ror r18 + 7da: 0a 94 dec r0 + 7dc: e2 f7 brpl .-8 ; 0x7d6 + 7de: 51 30 cpi r21, 0x01 ; 1 + 7e0: 31 f0 breq .+12 ; 0x7ee + 7e2: 52 30 cpi r21, 0x02 ; 2 + 7e4: 11 f0 breq .+4 ; 0x7ea + 7e6: 53 30 cpi r21, 0x03 ; 3 + 7e8: 29 f4 brne .+10 ; 0x7f4 + 7ea: 41 30 cpi r20, 0x01 ; 1 + 7ec: 99 f0 breq .+38 ; 0x814 + 7ee: 48 30 cpi r20, 0x08 ; 8 + 7f0: 39 f4 brne .+14 ; 0x800 + 7f2: 10 c0 rjmp .+32 ; 0x814 + 7f4: 54 30 cpi r21, 0x04 ; 4 + 7f6: 21 f4 brne .+8 ; 0x800 + 7f8: 42 30 cpi r20, 0x02 ; 2 + 7fa: 61 f0 breq .+24 ; 0x814 + 7fc: 47 30 cpi r20, 0x07 ; 7 + 7fe: 51 f0 breq .+20 ; 0x814 + 800: 8c 91 ld r24, X + 802: 28 23 and r18, r24 + 804: 39 f4 brne .+14 ; 0x814 + 806: 31 96 adiw r30, 0x01 ; 1 + 808: 11 96 adiw r26, 0x01 ; 1 + 80a: ac 17 cp r26, r28 + 80c: bd 07 cpc r27, r29 + 80e: a9 f6 brne .-86 ; 0x7ba + 810: 80 e0 ldi r24, 0x00 ; 0 + 812: 01 c0 rjmp .+2 ; 0x816 + 814: 81 e0 ldi r24, 0x01 ; 1 + 816: df 91 pop r29 + 818: cf 91 pop r28 + 81a: 1f 91 pop r17 + 81c: 0f 91 pop r16 + 81e: 08 95 ret + +00000820 : + 820: cf 92 push r12 + 822: df 92 push r13 + 824: ef 92 push r14 + 826: ff 92 push r15 + 828: 0f 93 push r16 + 82a: 1f 93 push r17 + 82c: df 93 push r29 + 82e: cf 93 push r28 + 830: 00 d0 rcall .+0 ; 0x832 + 832: cd b7 in r28, 0x3d ; 61 + 834: de b7 in r29, 0x3e ; 62 + 836: 80 91 8c 01 lds r24, 0x018C + 83a: b7 e0 ldi r27, 0x07 ; 7 + 83c: eb 2e mov r14, r27 + 83e: e8 22 and r14, r24 + 840: e3 94 inc r14 + 842: 00 e0 ldi r16, 0x00 ; 0 + 844: 10 e0 ldi r17, 0x00 ; 0 + 846: 86 95 lsr r24 + 848: 86 95 lsr r24 + 84a: 86 95 lsr r24 + 84c: c8 2e mov r12, r24 + 84e: c3 94 inc r12 + 850: d0 2e mov r13, r16 + 852: 80 91 8c 01 lds r24, 0x018C + 856: f8 01 movw r30, r16 + 858: e8 0f add r30, r24 + 85a: f1 1d adc r31, r1 + 85c: e8 30 cpi r30, 0x08 ; 8 + 85e: f1 05 cpc r31, r1 + 860: 0c f0 brlt .+2 ; 0x864 + 862: 6b c0 rjmp .+214 ; 0x93a + 864: ee 56 subi r30, 0x6E ; 110 + 866: fe 4f sbci r31, 0xFE ; 254 + 868: 80 81 ld r24, Z + 86a: 8f 3f cpi r24, 0xFF ; 255 + 86c: 09 f0 breq .+2 ; 0x870 + 86e: 65 c0 rjmp .+202 ; 0x93a + 870: ff 24 eor r15, r15 + 872: 8c 2d mov r24, r12 + 874: 6e 2d mov r22, r14 + 876: 40 e0 ldi r20, 0x00 ; 0 + 878: 0e 94 8c 01 call 0x318 ; 0x318 + 87c: 28 ee ldi r18, 0xE8 ; 232 + 87e: 33 e0 ldi r19, 0x03 ; 3 + 880: 1a 82 std Y+2, r1 ; 0x02 + 882: 19 82 std Y+1, r1 ; 0x01 + 884: 05 c0 rjmp .+10 ; 0x890 + 886: 89 81 ldd r24, Y+1 ; 0x01 + 888: 9a 81 ldd r25, Y+2 ; 0x02 + 88a: 01 96 adiw r24, 0x01 ; 1 + 88c: 9a 83 std Y+2, r25 ; 0x02 + 88e: 89 83 std Y+1, r24 ; 0x01 + 890: 89 81 ldd r24, Y+1 ; 0x01 + 892: 9a 81 ldd r25, Y+2 ; 0x02 + 894: 8b 35 cpi r24, 0x5B ; 91 + 896: 91 05 cpc r25, r1 + 898: b1 f7 brne .-20 ; 0x886 + 89a: 21 50 subi r18, 0x01 ; 1 + 89c: 30 40 sbci r19, 0x00 ; 0 + 89e: 81 f7 brne .-32 ; 0x880 + 8a0: 8c 2d mov r24, r12 + 8a2: 6e 2d mov r22, r14 + 8a4: 4f ef ldi r20, 0xFF ; 255 + 8a6: 0e 94 8c 01 call 0x318 ; 0x318 + 8aa: 28 ee ldi r18, 0xE8 ; 232 + 8ac: 33 e0 ldi r19, 0x03 ; 3 + 8ae: 1a 82 std Y+2, r1 ; 0x02 + 8b0: 19 82 std Y+1, r1 ; 0x01 + 8b2: 05 c0 rjmp .+10 ; 0x8be + 8b4: 89 81 ldd r24, Y+1 ; 0x01 + 8b6: 9a 81 ldd r25, Y+2 ; 0x02 + 8b8: 01 96 adiw r24, 0x01 ; 1 + 8ba: 9a 83 std Y+2, r25 ; 0x02 + 8bc: 89 83 std Y+1, r24 ; 0x01 + 8be: 89 81 ldd r24, Y+1 ; 0x01 + 8c0: 9a 81 ldd r25, Y+2 ; 0x02 + 8c2: 8b 35 cpi r24, 0x5B ; 91 + 8c4: 91 05 cpc r25, r1 + 8c6: b1 f7 brne .-20 ; 0x8b4 + 8c8: 21 50 subi r18, 0x01 ; 1 + 8ca: 30 40 sbci r19, 0x00 ; 0 + 8cc: 81 f7 brne .-32 ; 0x8ae + 8ce: f3 94 inc r15 + 8d0: 83 e0 ldi r24, 0x03 ; 3 + 8d2: f8 16 cp r15, r24 + 8d4: 71 f6 brne .-100 ; 0x872 + 8d6: 90 91 8c 01 lds r25, 0x018C + 8da: 9d 0d add r25, r13 + 8dc: 08 c0 rjmp .+16 ; 0x8ee + 8de: e9 2f mov r30, r25 + 8e0: f0 e0 ldi r31, 0x00 ; 0 + 8e2: ee 56 subi r30, 0x6E ; 110 + 8e4: fe 4f sbci r31, 0xFE ; 254 + 8e6: 82 91 ld r24, -Z + 8e8: 31 96 adiw r30, 0x01 ; 1 + 8ea: 80 83 st Z, r24 + 8ec: 91 50 subi r25, 0x01 ; 1 + 8ee: 99 23 and r25, r25 + 8f0: b1 f7 brne .-20 ; 0x8de + 8f2: 0e 94 39 01 call 0x272 ; 0x272 + 8f6: e0 e0 ldi r30, 0x00 ; 0 + 8f8: f1 e0 ldi r31, 0x01 ; 1 + 8fa: 07 c0 rjmp .+14 ; 0x90a + 8fc: 80 91 c0 00 lds r24, 0x00C0 + 900: 85 ff sbrs r24, 5 + 902: fc cf rjmp .-8 ; 0x8fc + 904: 90 93 c6 00 sts 0x00C6, r25 + 908: 31 96 adiw r30, 0x01 ; 1 + 90a: 90 81 ld r25, Z + 90c: 99 23 and r25, r25 + 90e: b1 f7 brne .-20 ; 0x8fc + 910: 80 91 86 01 lds r24, 0x0186 + 914: 8f 5f subi r24, 0xFF ; 255 + 916: 80 93 86 01 sts 0x0186, r24 + 91a: 81 50 subi r24, 0x01 ; 1 + 91c: 0e 94 9c 00 call 0x138 ; 0x138 + 920: e8 e0 ldi r30, 0x08 ; 8 + 922: f1 e0 ldi r31, 0x01 ; 1 + 924: 07 c0 rjmp .+14 ; 0x934 + 926: 80 91 c0 00 lds r24, 0x00C0 + 92a: 85 ff sbrs r24, 5 + 92c: fc cf rjmp .-8 ; 0x926 + 92e: 90 93 c6 00 sts 0x00C6, r25 + 932: 31 96 adiw r30, 0x01 ; 1 + 934: 90 81 ld r25, Z + 936: 99 23 and r25, r25 + 938: b1 f7 brne .-20 ; 0x926 + 93a: 0f 5f subi r16, 0xFF ; 255 + 93c: 1f 4f sbci r17, 0xFF ; 255 + 93e: e3 94 inc r14 + 940: 04 30 cpi r16, 0x04 ; 4 + 942: 11 05 cpc r17, r1 + 944: 09 f0 breq .+2 ; 0x948 + 946: 84 cf rjmp .-248 ; 0x850 + 948: 0f 90 pop r0 + 94a: 0f 90 pop r0 + 94c: cf 91 pop r28 + 94e: df 91 pop r29 + 950: 1f 91 pop r17 + 952: 0f 91 pop r16 + 954: ff 90 pop r15 + 956: ef 90 pop r14 + 958: df 90 pop r13 + 95a: cf 90 pop r12 + 95c: 08 95 ret + +0000095e : + 95e: af 92 push r10 + 960: bf 92 push r11 + 962: cf 92 push r12 + 964: df 92 push r13 + 966: ff 92 push r15 + 968: 0f 93 push r16 + 96a: 1f 93 push r17 + 96c: df 93 push r29 + 96e: cf 93 push r28 + 970: 00 d0 rcall .+0 ; 0x972 + 972: 00 d0 rcall .+0 ; 0x974 + 974: 0f 92 push r0 + 976: cd b7 in r28, 0x3d ; 61 + 978: de b7 in r29, 0x3e ; 62 + 97a: de 01 movw r26, r28 + 97c: 13 96 adiw r26, 0x03 ; 3 + 97e: e7 e8 ldi r30, 0x87 ; 135 + 980: f1 e0 ldi r31, 0x01 ; 1 + 982: 83 e0 ldi r24, 0x03 ; 3 + 984: 01 90 ld r0, Z+ + 986: 0d 92 st X+, r0 + 988: 81 50 subi r24, 0x01 ; 1 + 98a: e1 f7 brne .-8 ; 0x984 + 98c: 10 e0 ldi r17, 0x00 ; 0 + 98e: 1f 5f subi r17, 0xFF ; 255 + 990: 81 e0 ldi r24, 0x01 ; 1 + 992: 61 2f mov r22, r17 + 994: 4f ef ldi r20, 0xFF ; 255 + 996: 0e 94 8c 01 call 0x318 ; 0x318 + 99a: 24 ef ldi r18, 0xF4 ; 244 + 99c: 31 e0 ldi r19, 0x01 ; 1 + 99e: 1a 82 std Y+2, r1 ; 0x02 + 9a0: 19 82 std Y+1, r1 ; 0x01 + 9a2: 05 c0 rjmp .+10 ; 0x9ae + 9a4: 89 81 ldd r24, Y+1 ; 0x01 + 9a6: 9a 81 ldd r25, Y+2 ; 0x02 + 9a8: 01 96 adiw r24, 0x01 ; 1 + 9aa: 9a 83 std Y+2, r25 ; 0x02 + 9ac: 89 83 std Y+1, r24 ; 0x01 + 9ae: 89 81 ldd r24, Y+1 ; 0x01 + 9b0: 9a 81 ldd r25, Y+2 ; 0x02 + 9b2: 8b 35 cpi r24, 0x5B ; 91 + 9b4: 91 05 cpc r25, r1 + 9b6: b1 f7 brne .-20 ; 0x9a4 + 9b8: 21 50 subi r18, 0x01 ; 1 + 9ba: 30 40 sbci r19, 0x00 ; 0 + 9bc: 81 f7 brne .-32 ; 0x99e + 9be: 18 30 cpi r17, 0x08 ; 8 + 9c0: 31 f7 brne .-52 ; 0x98e + 9c2: 02 e9 ldi r16, 0x92 ; 146 + 9c4: 11 e0 ldi r17, 0x01 ; 1 + 9c6: ff 24 eor r15, r15 + 9c8: f3 94 inc r15 + 9ca: 81 e0 ldi r24, 0x01 ; 1 + 9cc: 6f 2d mov r22, r15 + 9ce: 40 e0 ldi r20, 0x00 ; 0 + 9d0: 0e 94 8c 01 call 0x318 ; 0x318 + 9d4: f8 01 movw r30, r16 + 9d6: 10 82 st Z, r1 + 9d8: 24 ef ldi r18, 0xF4 ; 244 + 9da: 31 e0 ldi r19, 0x01 ; 1 + 9dc: 1a 82 std Y+2, r1 ; 0x02 + 9de: 19 82 std Y+1, r1 ; 0x01 + 9e0: 05 c0 rjmp .+10 ; 0x9ec + 9e2: 89 81 ldd r24, Y+1 ; 0x01 + 9e4: 9a 81 ldd r25, Y+2 ; 0x02 + 9e6: 01 96 adiw r24, 0x01 ; 1 + 9e8: 9a 83 std Y+2, r25 ; 0x02 + 9ea: 89 83 std Y+1, r24 ; 0x01 + 9ec: 89 81 ldd r24, Y+1 ; 0x01 + 9ee: 9a 81 ldd r25, Y+2 ; 0x02 + 9f0: 8b 35 cpi r24, 0x5B ; 91 + 9f2: 91 05 cpc r25, r1 + 9f4: b1 f7 brne .-20 ; 0x9e2 + 9f6: 21 50 subi r18, 0x01 ; 1 + 9f8: 30 40 sbci r19, 0x00 ; 0 + 9fa: 81 f7 brne .-32 ; 0x9dc + 9fc: 0f 5f subi r16, 0xFF ; 255 + 9fe: 1f 4f sbci r17, 0xFF ; 255 + a00: f8 e0 ldi r31, 0x08 ; 8 + a02: ff 16 cp r15, r31 + a04: 09 f7 brne .-62 ; 0x9c8 + a06: ff 24 eor r15, r15 + a08: 13 e0 ldi r17, 0x03 ; 3 + a0a: a1 2e mov r10, r17 + a0c: b1 2c mov r11, r1 + a0e: ac 0e add r10, r28 + a10: bd 1e adc r11, r29 + a12: 32 c0 rjmp .+100 ; 0xa78 + a14: 00 e0 ldi r16, 0x00 ; 0 + a16: 10 e0 ldi r17, 0x00 ; 0 + a18: cf 2c mov r12, r15 + a1a: dd 24 eor r13, r13 + a1c: 20 2f mov r18, r16 + a1e: 2f 5f subi r18, 0xFF ; 255 + a20: c8 01 movw r24, r16 + a22: 8c 0d add r24, r12 + a24: 9d 1d adc r25, r13 + a26: 63 e0 ldi r22, 0x03 ; 3 + a28: 70 e0 ldi r23, 0x00 ; 0 + a2a: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + a2e: f5 01 movw r30, r10 + a30: e8 0f add r30, r24 + a32: f9 1f adc r31, r25 + a34: 81 e0 ldi r24, 0x01 ; 1 + a36: 62 2f mov r22, r18 + a38: 40 81 ld r20, Z + a3a: 0e 94 8c 01 call 0x318 ; 0x318 + a3e: 0f 5f subi r16, 0xFF ; 255 + a40: 1f 4f sbci r17, 0xFF ; 255 + a42: 08 30 cpi r16, 0x08 ; 8 + a44: 11 05 cpc r17, r1 + a46: 51 f7 brne .-44 ; 0xa1c + a48: 81 e0 ldi r24, 0x01 ; 1 + a4a: 8f 15 cp r24, r15 + a4c: 10 f4 brcc .+4 ; 0xa52 + a4e: ff 24 eor r15, r15 + a50: 01 c0 rjmp .+2 ; 0xa54 + a52: f3 94 inc r15 + a54: 28 ee ldi r18, 0xE8 ; 232 + a56: 33 e0 ldi r19, 0x03 ; 3 + a58: 1a 82 std Y+2, r1 ; 0x02 + a5a: 19 82 std Y+1, r1 ; 0x01 + a5c: 05 c0 rjmp .+10 ; 0xa68 + a5e: 89 81 ldd r24, Y+1 ; 0x01 + a60: 9a 81 ldd r25, Y+2 ; 0x02 + a62: 01 96 adiw r24, 0x01 ; 1 + a64: 9a 83 std Y+2, r25 ; 0x02 + a66: 89 83 std Y+1, r24 ; 0x01 + a68: 89 81 ldd r24, Y+1 ; 0x01 + a6a: 9a 81 ldd r25, Y+2 ; 0x02 + a6c: 8b 35 cpi r24, 0x5B ; 91 + a6e: 91 05 cpc r25, r1 + a70: b1 f7 brne .-20 ; 0xa5e + a72: 21 50 subi r18, 0x01 ; 1 + a74: 30 40 sbci r19, 0x00 ; 0 + a76: 81 f7 brne .-32 ; 0xa58 + a78: 80 91 9d 01 lds r24, 0x019D + a7c: 88 23 and r24, r24 + a7e: 51 f2 breq .-108 ; 0xa14 + a80: 81 e0 ldi r24, 0x01 ; 1 + a82: 80 93 86 01 sts 0x0186, r24 + a86: e2 e1 ldi r30, 0x12 ; 18 + a88: f1 e0 ldi r31, 0x01 ; 1 + a8a: 07 c0 rjmp .+14 ; 0xa9a + a8c: 80 91 c0 00 lds r24, 0x00C0 + a90: 85 ff sbrs r24, 5 + a92: fc cf rjmp .-8 ; 0xa8c + a94: 90 93 c6 00 sts 0x00C6, r25 + a98: 31 96 adiw r30, 0x01 ; 1 + a9a: 90 81 ld r25, Z + a9c: 99 23 and r25, r25 + a9e: b1 f7 brne .-20 ; 0xa8c + aa0: 80 91 8d 01 lds r24, 0x018D + aa4: 90 91 8e 01 lds r25, 0x018E + aa8: 65 e0 ldi r22, 0x05 ; 5 + aaa: 70 e0 ldi r23, 0x00 ; 0 + aac: 0e 94 be 06 call 0xd7c ; 0xd7c <__udivmodhi4> + ab0: 80 93 84 01 sts 0x0184, r24 + ab4: 10 92 8b 01 sts 0x018B, r1 + ab8: 0f 90 pop r0 + aba: 0f 90 pop r0 + abc: 0f 90 pop r0 + abe: 0f 90 pop r0 + ac0: 0f 90 pop r0 + ac2: cf 91 pop r28 + ac4: df 91 pop r29 + ac6: 1f 91 pop r17 + ac8: 0f 91 pop r16 + aca: ff 90 pop r15 + acc: df 90 pop r13 + ace: cf 90 pop r12 + ad0: bf 90 pop r11 + ad2: af 90 pop r10 + ad4: 08 95 ret + +00000ad6 : + ad6: 1f 93 push r17 + ad8: cf 93 push r28 + ada: df 93 push r29 + adc: 10 91 85 01 lds r17, 0x0185 + ae0: 81 2f mov r24, r17 + ae2: 90 e0 ldi r25, 0x00 ; 0 + ae4: 44 e0 ldi r20, 0x04 ; 4 + ae6: 50 e0 ldi r21, 0x00 ; 0 + ae8: 48 1b sub r20, r24 + aea: 59 0b sbc r21, r25 + aec: ec 01 movw r28, r24 + aee: 24 97 sbiw r28, 0x04 ; 4 + af0: 80 91 8c 01 lds r24, 0x018C + af4: 30 91 8b 01 lds r19, 0x018B + af8: 20 91 84 01 lds r18, 0x0184 + afc: e2 2f mov r30, r18 + afe: f0 e0 ldi r31, 0x00 ; 0 + b00: ee 0f add r30, r30 + b02: ff 1f adc r31, r31 + b04: ee 0f add r30, r30 + b06: ff 1f adc r31, r31 + b08: e3 0f add r30, r19 + b0a: f1 1d adc r31, r1 + b0c: ee 0f add r30, r30 + b0e: ff 1f adc r31, r31 + b10: ee 0f add r30, r30 + b12: ff 1f adc r31, r31 + b14: ec 5c subi r30, 0xCC ; 204 + b16: fe 4f sbci r31, 0xFE ; 254 + b18: 90 e0 ldi r25, 0x00 ; 0 + b1a: dc 01 movw r26, r24 + b1c: ae 56 subi r26, 0x6E ; 110 + b1e: be 4f sbci r27, 0xFE ; 254 + b20: bc 01 movw r22, r24 + b22: 6a 56 subi r22, 0x6A ; 106 + b24: 7e 4f sbci r23, 0xFE ; 254 + b26: 80 81 ld r24, Z + b28: 28 2f mov r18, r24 + b2a: 30 e0 ldi r19, 0x00 ; 0 + b2c: 15 30 cpi r17, 0x05 ; 5 + b2e: 38 f4 brcc .+14 ; 0xb3e + b30: 04 2e mov r0, r20 + b32: 02 c0 rjmp .+4 ; 0xb38 + b34: 22 0f add r18, r18 + b36: 33 1f adc r19, r19 + b38: 0a 94 dec r0 + b3a: e2 f7 brpl .-8 ; 0xb34 + b3c: 06 c0 rjmp .+12 ; 0xb4a + b3e: 0c 2e mov r0, r28 + b40: 02 c0 rjmp .+4 ; 0xb46 + b42: 35 95 asr r19 + b44: 27 95 ror r18 + b46: 0a 94 dec r0 + b48: e2 f7 brpl .-8 ; 0xb42 + b4a: 8c 91 ld r24, X + b4c: 82 2b or r24, r18 + b4e: 8d 93 st X+, r24 + b50: 31 96 adiw r30, 0x01 ; 1 + b52: a6 17 cp r26, r22 + b54: b7 07 cpc r27, r23 + b56: 39 f7 brne .-50 ; 0xb26 + b58: 0e 94 10 04 call 0x820 ; 0x820 + b5c: 10 92 8c 01 sts 0x018C, r1 + b60: 10 92 8b 01 sts 0x018B, r1 + b64: 84 e0 ldi r24, 0x04 ; 4 + b66: 80 93 85 01 sts 0x0185, r24 + b6a: 80 91 91 01 lds r24, 0x0191 + b6e: 80 93 84 01 sts 0x0184, r24 + b72: 0e 94 76 02 call 0x4ec ; 0x4ec + b76: 81 30 cpi r24, 0x01 ; 1 + b78: 19 f0 breq .+6 ; 0xb80 + b7a: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + b7e: 02 c0 rjmp .+4 ; 0xb84 + b80: 0e 94 af 04 call 0x95e ; 0x95e + b84: df 91 pop r29 + b86: cf 91 pop r28 + b88: 1f 91 pop r17 + b8a: 08 95 ret + +00000b8c
: + b8c: 1f 93 push r17 + b8e: 23 9a sbi 0x04, 3 ; 4 + b90: 25 9a sbi 0x04, 5 ; 4 + b92: 24 9a sbi 0x04, 4 ; 4 + b94: 22 9a sbi 0x04, 2 ; 4 + b96: 81 e0 ldi r24, 0x01 ; 1 + b98: 60 91 31 01 lds r22, 0x0131 + b9c: 47 e0 ldi r20, 0x07 ; 7 + b9e: 0e 94 8c 01 call 0x318 ; 0x318 + ba2: 81 e0 ldi r24, 0x01 ; 1 + ba4: 60 91 2f 01 lds r22, 0x012F + ba8: 40 e0 ldi r20, 0x00 ; 0 + baa: 0e 94 8c 01 call 0x318 ; 0x318 + bae: 81 e0 ldi r24, 0x01 ; 1 + bb0: 60 91 32 01 lds r22, 0x0132 + bb4: 41 e0 ldi r20, 0x01 ; 1 + bb6: 0e 94 8c 01 call 0x318 ; 0x318 + bba: 81 e0 ldi r24, 0x01 ; 1 + bbc: 60 91 33 01 lds r22, 0x0133 + bc0: 40 e0 ldi r20, 0x00 ; 0 + bc2: 0e 94 8c 01 call 0x318 ; 0x318 + bc6: 10 e0 ldi r17, 0x00 ; 0 + bc8: 1f 5f subi r17, 0xFF ; 255 + bca: 81 e0 ldi r24, 0x01 ; 1 + bcc: 61 2f mov r22, r17 + bce: 40 e0 ldi r20, 0x00 ; 0 + bd0: 0e 94 8c 01 call 0x318 ; 0x318 + bd4: 18 30 cpi r17, 0x08 ; 8 + bd6: c1 f7 brne .-16 ; 0xbc8 + bd8: 81 e0 ldi r24, 0x01 ; 1 + bda: 60 91 30 01 lds r22, 0x0130 + bde: 4f e0 ldi r20, 0x0F ; 15 + be0: 0e 94 8c 01 call 0x318 ; 0x318 + be4: 87 e6 ldi r24, 0x67 ; 103 + be6: 90 e0 ldi r25, 0x00 ; 0 + be8: 90 93 c5 00 sts 0x00C5, r25 + bec: 80 93 c4 00 sts 0x00C4, r24 + bf0: 86 e0 ldi r24, 0x06 ; 6 + bf2: 80 93 c2 00 sts 0x00C2, r24 + bf6: 80 91 c1 00 lds r24, 0x00C1 + bfa: 88 61 ori r24, 0x18 ; 24 + bfc: 80 93 c1 00 sts 0x00C1, r24 + c00: 80 91 c1 00 lds r24, 0x00C1 + c04: 80 68 ori r24, 0x80 ; 128 + c06: 80 93 c1 00 sts 0x00C1, r24 + c0a: 78 94 sei + c0c: 8f ef ldi r24, 0xFF ; 255 + c0e: 80 93 9a 01 sts 0x019A, r24 + c12: 80 91 8d 01 lds r24, 0x018D + c16: 83 70 andi r24, 0x03 ; 3 + c18: 80 93 84 01 sts 0x0184, r24 + c1c: e2 e1 ldi r30, 0x12 ; 18 + c1e: f1 e0 ldi r31, 0x01 ; 1 + c20: 07 c0 rjmp .+14 ; 0xc30 + c22: 80 91 c0 00 lds r24, 0x00C0 + c26: 85 ff sbrs r24, 5 + c28: fc cf rjmp .-8 ; 0xc22 + c2a: 90 93 c6 00 sts 0x00C6, r25 + c2e: 31 96 adiw r30, 0x01 ; 1 + c30: 90 81 ld r25, Z + c32: 99 23 and r25, r25 + c34: b1 f7 brne .-20 ; 0xc22 + c36: 60 91 8d 01 lds r22, 0x018D + c3a: 70 91 8e 01 lds r23, 0x018E + c3e: 80 91 8f 01 lds r24, 0x018F + c42: 90 91 90 01 lds r25, 0x0190 + c46: 20 e2 ldi r18, 0x20 ; 32 + c48: 3e e4 ldi r19, 0x4E ; 78 + c4a: 40 e0 ldi r20, 0x00 ; 0 + c4c: 50 e0 ldi r21, 0x00 ; 0 + c4e: 0e 94 e5 06 call 0xdca ; 0xdca <__udivmodsi4> + c52: 61 15 cp r22, r1 + c54: 71 05 cpc r23, r1 + c56: 81 05 cpc r24, r1 + c58: 91 05 cpc r25, r1 + c5a: 09 f5 brne .+66 ; 0xc9e + c5c: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + c60: 0e 94 2d 02 call 0x45a ; 0x45a + c64: 81 30 cpi r24, 0x01 ; 1 + c66: 31 f0 breq .+12 ; 0xc74 + c68: 80 91 8c 01 lds r24, 0x018C + c6c: 8f 5f subi r24, 0xFF ; 255 + c6e: 80 93 8c 01 sts 0x018C, r24 + c72: 15 c0 rjmp .+42 ; 0xc9e + c74: 90 91 9b 01 lds r25, 0x019B + c78: 80 91 91 01 lds r24, 0x0191 + c7c: 98 17 cp r25, r24 + c7e: 19 f4 brne .+6 ; 0xc86 + c80: 9f 5f subi r25, 0xFF ; 255 + c82: 90 93 91 01 sts 0x0191, r25 + c86: 80 91 91 01 lds r24, 0x0191 + c8a: 86 30 cpi r24, 0x06 ; 6 + c8c: 10 f0 brcs .+4 ; 0xc92 + c8e: 10 92 91 01 sts 0x0191, r1 + c92: 80 91 91 01 lds r24, 0x0191 + c96: 80 93 9b 01 sts 0x019B, r24 + c9a: 0e 94 6b 05 call 0xad6 ; 0xad6 + c9e: 20 91 8d 01 lds r18, 0x018D + ca2: 30 91 8e 01 lds r19, 0x018E + ca6: 40 91 8f 01 lds r20, 0x018F + caa: 50 91 90 01 lds r21, 0x0190 + cae: 2f 5f subi r18, 0xFF ; 255 + cb0: 3f 4f sbci r19, 0xFF ; 255 + cb2: 4f 4f sbci r20, 0xFF ; 255 + cb4: 5f 4f sbci r21, 0xFF ; 255 + cb6: 20 93 8d 01 sts 0x018D, r18 + cba: 30 93 8e 01 sts 0x018E, r19 + cbe: 40 93 8f 01 sts 0x018F, r20 + cc2: 50 93 90 01 sts 0x0190, r21 + cc6: 90 91 9d 01 lds r25, 0x019D + cca: 80 91 9c 01 lds r24, 0x019C + cce: 98 17 cp r25, r24 + cd0: 09 f4 brne .+2 ; 0xcd4 + cd2: b1 cf rjmp .-158 ; 0xc36 + cd4: 80 91 9d 01 lds r24, 0x019D + cd8: 80 93 9c 01 sts 0x019C, r24 + cdc: 82 2f mov r24, r18 + cde: 83 70 andi r24, 0x03 ; 3 + ce0: 80 93 91 01 sts 0x0191, r24 + ce4: 80 91 9d 01 lds r24, 0x019D + ce8: 83 34 cpi r24, 0x43 ; 67 + cea: 69 f4 brne .+26 ; 0xd06 + cec: 0e 94 36 03 call 0x66c ; 0x66c + cf0: 81 30 cpi r24, 0x01 ; 1 + cf2: 29 f0 breq .+10 ; 0xcfe + cf4: 80 91 85 01 lds r24, 0x0185 + cf8: 8f 5f subi r24, 0xFF ; 255 + cfa: 80 93 85 01 sts 0x0185, r24 + cfe: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d02: 0e 94 05 01 call 0x20a ; 0x20a + d06: 80 91 9d 01 lds r24, 0x019D + d0a: 84 34 cpi r24, 0x44 ; 68 + d0c: 69 f4 brne .+26 ; 0xd28 + d0e: 0e 94 bf 02 call 0x57e ; 0x57e + d12: 81 30 cpi r24, 0x01 ; 1 + d14: 29 f0 breq .+10 ; 0xd20 + d16: 80 91 85 01 lds r24, 0x0185 + d1a: 81 50 subi r24, 0x01 ; 1 + d1c: 80 93 85 01 sts 0x0185, r24 + d20: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d24: 0e 94 05 01 call 0x20a ; 0x20a + d28: 80 91 9d 01 lds r24, 0x019D + d2c: 82 34 cpi r24, 0x42 ; 66 + d2e: 69 f4 brne .+26 ; 0xd4a + d30: 0e 94 2d 02 call 0x45a ; 0x45a + d34: 81 30 cpi r24, 0x01 ; 1 + d36: 29 f0 breq .+10 ; 0xd42 + d38: 80 91 8c 01 lds r24, 0x018C + d3c: 8f 5f subi r24, 0xFF ; 255 + d3e: 80 93 8c 01 sts 0x018C, r24 + d42: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d46: 0e 94 05 01 call 0x20a ; 0x20a + d4a: 80 91 9d 01 lds r24, 0x019D + d4e: 81 34 cpi r24, 0x41 ; 65 + d50: 91 f4 brne .+36 ; 0xd76 + d52: 0e 94 ad 03 call 0x75a ; 0x75a + d56: 81 30 cpi r24, 0x01 ; 1 + d58: 71 f0 breq .+28 ; 0xd76 + d5a: 80 91 8b 01 lds r24, 0x018B + d5e: 83 30 cpi r24, 0x03 ; 3 + d60: 20 f4 brcc .+8 ; 0xd6a + d62: 8f 5f subi r24, 0xFF ; 255 + d64: 80 93 8b 01 sts 0x018B, r24 + d68: 02 c0 rjmp .+4 ; 0xd6e + d6a: 10 92 8b 01 sts 0x018B, r1 + d6e: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d72: 0e 94 05 01 call 0x20a ; 0x20a + d76: 10 92 9d 01 sts 0x019D, r1 + d7a: 5d cf rjmp .-326 ; 0xc36 + +00000d7c <__udivmodhi4>: + d7c: aa 1b sub r26, r26 + d7e: bb 1b sub r27, r27 + d80: 51 e1 ldi r21, 0x11 ; 17 + d82: 07 c0 rjmp .+14 ; 0xd92 <__udivmodhi4_ep> + +00000d84 <__udivmodhi4_loop>: + d84: aa 1f adc r26, r26 + d86: bb 1f adc r27, r27 + d88: a6 17 cp r26, r22 + d8a: b7 07 cpc r27, r23 + d8c: 10 f0 brcs .+4 ; 0xd92 <__udivmodhi4_ep> + d8e: a6 1b sub r26, r22 + d90: b7 0b sbc r27, r23 + +00000d92 <__udivmodhi4_ep>: + d92: 88 1f adc r24, r24 + d94: 99 1f adc r25, r25 + d96: 5a 95 dec r21 + d98: a9 f7 brne .-22 ; 0xd84 <__udivmodhi4_loop> + d9a: 80 95 com r24 + d9c: 90 95 com r25 + d9e: bc 01 movw r22, r24 + da0: cd 01 movw r24, r26 + da2: 08 95 ret + +00000da4 <__divmodhi4>: + da4: 97 fb bst r25, 7 + da6: 09 2e mov r0, r25 + da8: 07 26 eor r0, r23 + daa: 0a d0 rcall .+20 ; 0xdc0 <__divmodhi4_neg1> + dac: 77 fd sbrc r23, 7 + dae: 04 d0 rcall .+8 ; 0xdb8 <__divmodhi4_neg2> + db0: e5 df rcall .-54 ; 0xd7c <__udivmodhi4> + db2: 06 d0 rcall .+12 ; 0xdc0 <__divmodhi4_neg1> + db4: 00 20 and r0, r0 + db6: 1a f4 brpl .+6 ; 0xdbe <__divmodhi4_exit> + +00000db8 <__divmodhi4_neg2>: + db8: 70 95 com r23 + dba: 61 95 neg r22 + dbc: 7f 4f sbci r23, 0xFF ; 255 + +00000dbe <__divmodhi4_exit>: + dbe: 08 95 ret + +00000dc0 <__divmodhi4_neg1>: + dc0: f6 f7 brtc .-4 ; 0xdbe <__divmodhi4_exit> + dc2: 90 95 com r25 + dc4: 81 95 neg r24 + dc6: 9f 4f sbci r25, 0xFF ; 255 + dc8: 08 95 ret + +00000dca <__udivmodsi4>: + dca: a1 e2 ldi r26, 0x21 ; 33 + dcc: 1a 2e mov r1, r26 + dce: aa 1b sub r26, r26 + dd0: bb 1b sub r27, r27 + dd2: fd 01 movw r30, r26 + dd4: 0d c0 rjmp .+26 ; 0xdf0 <__udivmodsi4_ep> + +00000dd6 <__udivmodsi4_loop>: + dd6: aa 1f adc r26, r26 + dd8: bb 1f adc r27, r27 + dda: ee 1f adc r30, r30 + ddc: ff 1f adc r31, r31 + dde: a2 17 cp r26, r18 + de0: b3 07 cpc r27, r19 + de2: e4 07 cpc r30, r20 + de4: f5 07 cpc r31, r21 + de6: 20 f0 brcs .+8 ; 0xdf0 <__udivmodsi4_ep> + de8: a2 1b sub r26, r18 + dea: b3 0b sbc r27, r19 + dec: e4 0b sbc r30, r20 + dee: f5 0b sbc r31, r21 + +00000df0 <__udivmodsi4_ep>: + df0: 66 1f adc r22, r22 + df2: 77 1f adc r23, r23 + df4: 88 1f adc r24, r24 + df6: 99 1f adc r25, r25 + df8: 1a 94 dec r1 + dfa: 69 f7 brne .-38 ; 0xdd6 <__udivmodsi4_loop> + dfc: 60 95 com r22 + dfe: 70 95 com r23 + e00: 80 95 com r24 + e02: 90 95 com r25 + e04: 9b 01 movw r18, r22 + e06: ac 01 movw r20, r24 + e08: bd 01 movw r22, r26 + e0a: cf 01 movw r24, r30 + e0c: 08 95 ret + +00000e0e <_exit>: + e0e: f8 94 cli + +00000e10 <__stop_program>: + e10: ff cf rjmp .-2 ; 0xe10 <__stop_program> diff --git a/compiled.lst b/compiled.lst new file mode 100644 index 0000000..57e0d88 --- /dev/null +++ b/compiled.lst @@ -0,0 +1,1716 @@ + +compiled.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 0000008a 00800100 00000e12 00000ea6 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00000e12 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000014 0080018a 0080018a 00000f30 2**0 + ALLOC + 3 .stab 000006b4 00000000 00000000 00000f30 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00000054 00000000 00000000 000015e4 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 48: 0c 94 75 00 jmp 0xea ; 0xea <__vector_18> + 4c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d4 e0 ldi r29, 0x04 ; 4 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 74: 11 e0 ldi r17, 0x01 ; 1 + 76: a0 e0 ldi r26, 0x00 ; 0 + 78: b1 e0 ldi r27, 0x01 ; 1 + 7a: e2 e1 ldi r30, 0x12 ; 18 + 7c: fe e0 ldi r31, 0x0E ; 14 + 7e: 02 c0 rjmp .+4 ; 0x84 <.do_copy_data_start> + +00000080 <.do_copy_data_loop>: + 80: 05 90 lpm r0, Z+ + 82: 0d 92 st X+, r0 + +00000084 <.do_copy_data_start>: + 84: aa 38 cpi r26, 0x8A ; 138 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <.do_copy_data_loop> + +0000008a <__do_clear_bss>: + 8a: 11 e0 ldi r17, 0x01 ; 1 + 8c: aa e8 ldi r26, 0x8A ; 138 + 8e: b1 e0 ldi r27, 0x01 ; 1 + 90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> + +00000092 <.do_clear_bss_loop>: + 92: 1d 92 st X+, r1 + +00000094 <.do_clear_bss_start>: + 94: ae 39 cpi r26, 0x9E ; 158 + 96: b1 07 cpc r27, r17 + 98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> + 9a: 0e 94 c6 05 call 0xb8c ; 0xb8c
+ 9e: 0c 94 07 07 jmp 0xe0e ; 0xe0e <_exit> + +000000a2 <__bad_interrupt>: + a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000a6 : + a6: e1 ec ldi r30, 0xC1 ; 193 + a8: f0 e0 ldi r31, 0x00 ; 0 + aa: 80 81 ld r24, Z + ac: 80 68 ori r24, 0x80 ; 128 + ae: 80 83 st Z, r24 + b0: 08 95 ret + +000000b2 : + b2: 90 93 c5 00 sts 0x00C5, r25 + b6: 80 93 c4 00 sts 0x00C4, r24 + ba: 86 e0 ldi r24, 0x06 ; 6 + bc: 80 93 c2 00 sts 0x00C2, r24 + c0: e1 ec ldi r30, 0xC1 ; 193 + c2: f0 e0 ldi r31, 0x00 ; 0 + c4: 80 81 ld r24, Z + c6: 88 61 ori r24, 0x18 ; 24 + c8: 80 83 st Z, r24 + ca: 08 95 ret + +000000cc : + cc: 80 91 c0 00 lds r24, 0x00C0 + d0: 87 ff sbrs r24, 7 + d2: fc cf rjmp .-8 ; 0xcc + d4: 80 91 c6 00 lds r24, 0x00C6 + d8: 08 95 ret + +000000da : + da: 98 2f mov r25, r24 + dc: 80 91 c0 00 lds r24, 0x00C0 + e0: 85 ff sbrs r24, 5 + e2: fc cf rjmp .-8 ; 0xdc + e4: 90 93 c6 00 sts 0x00C6, r25 + e8: 08 95 ret + +000000ea <__vector_18>: + ea: 1f 92 push r1 + ec: 0f 92 push r0 + ee: 0f b6 in r0, 0x3f ; 63 + f0: 0f 92 push r0 + f2: 11 24 eor r1, r1 + f4: 8f 93 push r24 + f6: df 93 push r29 + f8: cf 93 push r28 + fa: 0f 92 push r0 + fc: cd b7 in r28, 0x3d ; 61 + fe: de b7 in r29, 0x3e ; 62 + 100: 80 91 c6 00 lds r24, 0x00C6 + 104: 89 83 std Y+1, r24 ; 0x01 + 106: 89 81 ldd r24, Y+1 ; 0x01 + 108: 80 93 9d 01 sts 0x019D, r24 + 10c: 0f 90 pop r0 + 10e: cf 91 pop r28 + 110: df 91 pop r29 + 112: 8f 91 pop r24 + 114: 0f 90 pop r0 + 116: 0f be out 0x3f, r0 ; 63 + 118: 0f 90 pop r0 + 11a: 1f 90 pop r1 + 11c: 18 95 reti + +0000011e : + 11e: fc 01 movw r30, r24 + 120: 07 c0 rjmp .+14 ; 0x130 + 122: 80 91 c0 00 lds r24, 0x00C0 + 126: 85 ff sbrs r24, 5 + 128: fc cf rjmp .-8 ; 0x122 + 12a: 90 93 c6 00 sts 0x00C6, r25 + 12e: 31 96 adiw r30, 0x01 ; 1 + 130: 90 81 ld r25, Z + 132: 99 23 and r25, r25 + 134: b1 f7 brne .-20 ; 0x122 + 136: 08 95 ret + +00000138 : + 138: cf 93 push r28 + 13a: df 93 push r29 + 13c: ec 01 movw r28, r24 + 13e: 28 ee ldi r18, 0xE8 ; 232 + 140: 33 e0 ldi r19, 0x03 ; 3 + 142: e0 e0 ldi r30, 0x00 ; 0 + 144: f0 e0 ldi r31, 0x00 ; 0 + 146: ce 01 movw r24, r28 + 148: b9 01 movw r22, r18 + 14a: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + 14e: 46 2f mov r20, r22 + 150: 80 91 c0 00 lds r24, 0x00C0 + 154: 85 ff sbrs r24, 5 + 156: fc cf rjmp .-8 ; 0x150 + 158: 40 5d subi r20, 0xD0 ; 208 + 15a: 40 93 c6 00 sts 0x00C6, r20 + 15e: 40 53 subi r20, 0x30 ; 48 + 160: c9 01 movw r24, r18 + 162: 6a e0 ldi r22, 0x0A ; 10 + 164: 70 e0 ldi r23, 0x00 ; 0 + 166: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + 16a: 31 96 adiw r30, 0x01 ; 1 + 16c: e4 30 cpi r30, 0x04 ; 4 + 16e: f1 05 cpc r31, r1 + 170: 71 f0 breq .+28 ; 0x18e + 172: 84 2f mov r24, r20 + 174: 90 e0 ldi r25, 0x00 ; 0 + 176: ac 01 movw r20, r24 + 178: 42 9f mul r20, r18 + 17a: c0 01 movw r24, r0 + 17c: 43 9f mul r20, r19 + 17e: 90 0d add r25, r0 + 180: 52 9f mul r21, r18 + 182: 90 0d add r25, r0 + 184: 11 24 eor r1, r1 + 186: c8 1b sub r28, r24 + 188: d9 0b sbc r29, r25 + 18a: 9b 01 movw r18, r22 + 18c: dc cf rjmp .-72 ; 0x146 + 18e: df 91 pop r29 + 190: cf 91 pop r28 + 192: 08 95 ret + +00000194 : + 194: df 93 push r29 + 196: cf 93 push r28 + 198: 00 d0 rcall .+0 ; 0x19a + 19a: cd b7 in r28, 0x3d ; 61 + 19c: de b7 in r29, 0x3e ; 62 + 19e: 9c 01 movw r18, r24 + 1a0: 0f c0 rjmp .+30 ; 0x1c0 + 1a2: 1a 82 std Y+2, r1 ; 0x02 + 1a4: 19 82 std Y+1, r1 ; 0x01 + 1a6: 05 c0 rjmp .+10 ; 0x1b2 + 1a8: 89 81 ldd r24, Y+1 ; 0x01 + 1aa: 9a 81 ldd r25, Y+2 ; 0x02 + 1ac: 01 96 adiw r24, 0x01 ; 1 + 1ae: 9a 83 std Y+2, r25 ; 0x02 + 1b0: 89 83 std Y+1, r24 ; 0x01 + 1b2: 89 81 ldd r24, Y+1 ; 0x01 + 1b4: 9a 81 ldd r25, Y+2 ; 0x02 + 1b6: 8b 35 cpi r24, 0x5B ; 91 + 1b8: 91 05 cpc r25, r1 + 1ba: b1 f7 brne .-20 ; 0x1a8 + 1bc: 21 50 subi r18, 0x01 ; 1 + 1be: 30 40 sbci r19, 0x00 ; 0 + 1c0: 21 15 cp r18, r1 + 1c2: 31 05 cpc r19, r1 + 1c4: 71 f7 brne .-36 ; 0x1a2 + 1c6: 0f 90 pop r0 + 1c8: 0f 90 pop r0 + 1ca: cf 91 pop r28 + 1cc: df 91 pop r29 + 1ce: 08 95 ret + +000001d0 : + 1d0: df 93 push r29 + 1d2: cf 93 push r28 + 1d4: 00 d0 rcall .+0 ; 0x1d6 + 1d6: cd b7 in r28, 0x3d ; 61 + 1d8: de b7 in r29, 0x3e ; 62 + 1da: 9c 01 movw r18, r24 + 1dc: 0e c0 rjmp .+28 ; 0x1fa + 1de: 1a 82 std Y+2, r1 ; 0x02 + 1e0: 19 82 std Y+1, r1 ; 0x01 + 1e2: 05 c0 rjmp .+10 ; 0x1ee + 1e4: 89 81 ldd r24, Y+1 ; 0x01 + 1e6: 9a 81 ldd r25, Y+2 ; 0x02 + 1e8: 01 96 adiw r24, 0x01 ; 1 + 1ea: 9a 83 std Y+2, r25 ; 0x02 + 1ec: 89 83 std Y+1, r24 ; 0x01 + 1ee: 89 81 ldd r24, Y+1 ; 0x01 + 1f0: 9a 81 ldd r25, Y+2 ; 0x02 + 1f2: 09 97 sbiw r24, 0x09 ; 9 + 1f4: b9 f7 brne .-18 ; 0x1e4 + 1f6: 21 50 subi r18, 0x01 ; 1 + 1f8: 30 40 sbci r19, 0x00 ; 0 + 1fa: 21 15 cp r18, r1 + 1fc: 31 05 cpc r19, r1 + 1fe: 79 f7 brne .-34 ; 0x1de + 200: 0f 90 pop r0 + 202: 0f 90 pop r0 + 204: cf 91 pop r28 + 206: df 91 pop r29 + 208: 08 95 ret + +0000020a : + 20a: df 93 push r29 + 20c: cf 93 push r28 + 20e: 00 d0 rcall .+0 ; 0x210 + 210: cd b7 in r28, 0x3d ; 61 + 212: de b7 in r29, 0x3e ; 62 + 214: 40 e0 ldi r20, 0x00 ; 0 + 216: 2a 9a sbi 0x05, 2 ; 5 + 218: 21 e0 ldi r18, 0x01 ; 1 + 21a: 30 e0 ldi r19, 0x00 ; 0 + 21c: 1a 82 std Y+2, r1 ; 0x02 + 21e: 19 82 std Y+1, r1 ; 0x01 + 220: 05 c0 rjmp .+10 ; 0x22c + 222: 89 81 ldd r24, Y+1 ; 0x01 + 224: 9a 81 ldd r25, Y+2 ; 0x02 + 226: 01 96 adiw r24, 0x01 ; 1 + 228: 9a 83 std Y+2, r25 ; 0x02 + 22a: 89 83 std Y+1, r24 ; 0x01 + 22c: 89 81 ldd r24, Y+1 ; 0x01 + 22e: 9a 81 ldd r25, Y+2 ; 0x02 + 230: 8b 35 cpi r24, 0x5B ; 91 + 232: 91 05 cpc r25, r1 + 234: b1 f7 brne .-20 ; 0x222 + 236: 21 50 subi r18, 0x01 ; 1 + 238: 30 40 sbci r19, 0x00 ; 0 + 23a: 81 f7 brne .-32 ; 0x21c + 23c: 2a 98 cbi 0x05, 2 ; 5 + 23e: 21 e0 ldi r18, 0x01 ; 1 + 240: 30 e0 ldi r19, 0x00 ; 0 + 242: 1a 82 std Y+2, r1 ; 0x02 + 244: 19 82 std Y+1, r1 ; 0x01 + 246: 05 c0 rjmp .+10 ; 0x252 + 248: 89 81 ldd r24, Y+1 ; 0x01 + 24a: 9a 81 ldd r25, Y+2 ; 0x02 + 24c: 01 96 adiw r24, 0x01 ; 1 + 24e: 9a 83 std Y+2, r25 ; 0x02 + 250: 89 83 std Y+1, r24 ; 0x01 + 252: 89 81 ldd r24, Y+1 ; 0x01 + 254: 9a 81 ldd r25, Y+2 ; 0x02 + 256: 8b 35 cpi r24, 0x5B ; 91 + 258: 91 05 cpc r25, r1 + 25a: b1 f7 brne .-20 ; 0x248 + 25c: 21 50 subi r18, 0x01 ; 1 + 25e: 30 40 sbci r19, 0x00 ; 0 + 260: 81 f7 brne .-32 ; 0x242 + 262: 4f 5f subi r20, 0xFF ; 255 + 264: 44 36 cpi r20, 0x64 ; 100 + 266: b9 f6 brne .-82 ; 0x216 + 268: 0f 90 pop r0 + 26a: 0f 90 pop r0 + 26c: cf 91 pop r28 + 26e: df 91 pop r29 + 270: 08 95 ret + +00000272 : + 272: df 93 push r29 + 274: cf 93 push r28 + 276: 00 d0 rcall .+0 ; 0x278 + 278: cd b7 in r28, 0x3d ; 61 + 27a: de b7 in r29, 0x3e ; 62 + 27c: 41 e0 ldi r20, 0x01 ; 1 + 27e: 50 e0 ldi r21, 0x00 ; 0 + 280: 2a c0 rjmp .+84 ; 0x2d6 + 282: 2a 9a sbi 0x05, 2 ; 5 + 284: 9a 01 movw r18, r20 + 286: 1a 82 std Y+2, r1 ; 0x02 + 288: 19 82 std Y+1, r1 ; 0x01 + 28a: 05 c0 rjmp .+10 ; 0x296 + 28c: 89 81 ldd r24, Y+1 ; 0x01 + 28e: 9a 81 ldd r25, Y+2 ; 0x02 + 290: 01 96 adiw r24, 0x01 ; 1 + 292: 9a 83 std Y+2, r25 ; 0x02 + 294: 89 83 std Y+1, r24 ; 0x01 + 296: 89 81 ldd r24, Y+1 ; 0x01 + 298: 9a 81 ldd r25, Y+2 ; 0x02 + 29a: 09 97 sbiw r24, 0x09 ; 9 + 29c: b9 f7 brne .-18 ; 0x28c + 29e: 21 50 subi r18, 0x01 ; 1 + 2a0: 30 40 sbci r19, 0x00 ; 0 + 2a2: 89 f7 brne .-30 ; 0x286 + 2a4: 2a 98 cbi 0x05, 2 ; 5 + 2a6: 9a 01 movw r18, r20 + 2a8: 1a 82 std Y+2, r1 ; 0x02 + 2aa: 19 82 std Y+1, r1 ; 0x01 + 2ac: 05 c0 rjmp .+10 ; 0x2b8 + 2ae: 89 81 ldd r24, Y+1 ; 0x01 + 2b0: 9a 81 ldd r25, Y+2 ; 0x02 + 2b2: 01 96 adiw r24, 0x01 ; 1 + 2b4: 9a 83 std Y+2, r25 ; 0x02 + 2b6: 89 83 std Y+1, r24 ; 0x01 + 2b8: 89 81 ldd r24, Y+1 ; 0x01 + 2ba: 9a 81 ldd r25, Y+2 ; 0x02 + 2bc: 09 97 sbiw r24, 0x09 ; 9 + 2be: b9 f7 brne .-18 ; 0x2ae + 2c0: 21 50 subi r18, 0x01 ; 1 + 2c2: 30 40 sbci r19, 0x00 ; 0 + 2c4: 89 f7 brne .-30 ; 0x2a8 + 2c6: 6f 5f subi r22, 0xFF ; 255 + 2c8: 64 36 cpi r22, 0x64 ; 100 + 2ca: d9 f6 brne .-74 ; 0x282 + 2cc: 46 5f subi r20, 0xF6 ; 246 + 2ce: 5f 4f sbci r21, 0xFF ; 255 + 2d0: 49 32 cpi r20, 0x29 ; 41 + 2d2: 51 05 cpc r21, r1 + 2d4: 11 f0 breq .+4 ; 0x2da + 2d6: 60 e0 ldi r22, 0x00 ; 0 + 2d8: d4 cf rjmp .-88 ; 0x282 + 2da: 0f 90 pop r0 + 2dc: 0f 90 pop r0 + 2de: cf 91 pop r28 + 2e0: df 91 pop r29 + 2e2: 08 95 ret + +000002e4 : + 2e4: 68 2f mov r22, r24 + 2e6: 27 e0 ldi r18, 0x07 ; 7 + 2e8: 30 e0 ldi r19, 0x00 ; 0 + 2ea: 41 e0 ldi r20, 0x01 ; 1 + 2ec: 50 e0 ldi r21, 0x00 ; 0 + 2ee: 2c 98 cbi 0x05, 4 ; 5 + 2f0: ca 01 movw r24, r20 + 2f2: 02 2e mov r0, r18 + 2f4: 02 c0 rjmp .+4 ; 0x2fa + 2f6: 88 0f add r24, r24 + 2f8: 99 1f adc r25, r25 + 2fa: 0a 94 dec r0 + 2fc: e2 f7 brpl .-8 ; 0x2f6 + 2fe: 86 23 and r24, r22 + 300: 11 f0 breq .+4 ; 0x306 + 302: 2b 9a sbi 0x05, 3 ; 5 + 304: 01 c0 rjmp .+2 ; 0x308 + 306: 2b 98 cbi 0x05, 3 ; 5 + 308: 2c 9a sbi 0x05, 4 ; 5 + 30a: 21 50 subi r18, 0x01 ; 1 + 30c: 30 40 sbci r19, 0x00 ; 0 + 30e: 8f ef ldi r24, 0xFF ; 255 + 310: 2f 3f cpi r18, 0xFF ; 255 + 312: 38 07 cpc r19, r24 + 314: 61 f7 brne .-40 ; 0x2ee + 316: 08 95 ret + +00000318 : + 318: 0f 93 push r16 + 31a: 1f 93 push r17 + 31c: cf 93 push r28 + 31e: df 93 push r29 + 320: 16 2f mov r17, r22 + 322: 04 2f mov r16, r20 + 324: 2d 98 cbi 0x05, 5 ; 5 + 326: 21 e0 ldi r18, 0x01 ; 1 + 328: 30 e0 ldi r19, 0x00 ; 0 + 32a: c8 2f mov r28, r24 + 32c: d0 e0 ldi r29, 0x00 ; 0 + 32e: 08 c0 rjmp .+16 ; 0x340 + 330: 80 e0 ldi r24, 0x00 ; 0 + 332: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 336: 80 e0 ldi r24, 0x00 ; 0 + 338: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 33c: 20 e0 ldi r18, 0x00 ; 0 + 33e: 30 e0 ldi r19, 0x00 ; 0 + 340: c2 17 cp r28, r18 + 342: d3 07 cpc r29, r19 + 344: ac f3 brlt .-22 ; 0x330 + 346: 81 2f mov r24, r17 + 348: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 34c: 80 2f mov r24, r16 + 34e: 04 c0 rjmp .+8 ; 0x358 + 350: 80 e0 ldi r24, 0x00 ; 0 + 352: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 356: 80 e0 ldi r24, 0x00 ; 0 + 358: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 35c: 21 97 sbiw r28, 0x01 ; 1 + 35e: 1c 16 cp r1, r28 + 360: 1d 06 cpc r1, r29 + 362: b4 f3 brlt .-20 ; 0x350 + 364: 2d 98 cbi 0x05, 5 ; 5 + 366: 2d 9a sbi 0x05, 5 ; 5 + 368: df 91 pop r29 + 36a: cf 91 pop r28 + 36c: 1f 91 pop r17 + 36e: 0f 91 pop r16 + 370: 08 95 ret + +00000372 : + 372: 48 2f mov r20, r24 + 374: 50 e0 ldi r21, 0x00 ; 0 + 376: 26 2f mov r18, r22 + 378: 30 e0 ldi r19, 0x00 ; 0 + 37a: 65 30 cpi r22, 0x05 ; 5 + 37c: 58 f4 brcc .+22 ; 0x394 + 37e: 84 e0 ldi r24, 0x04 ; 4 + 380: 90 e0 ldi r25, 0x00 ; 0 + 382: 82 1b sub r24, r18 + 384: 93 0b sbc r25, r19 + 386: 02 c0 rjmp .+4 ; 0x38c + 388: 44 0f add r20, r20 + 38a: 55 1f adc r21, r21 + 38c: 8a 95 dec r24 + 38e: e2 f7 brpl .-8 ; 0x388 + 390: 84 2f mov r24, r20 + 392: 08 95 ret + 394: 24 50 subi r18, 0x04 ; 4 + 396: 30 40 sbci r19, 0x00 ; 0 + 398: 02 c0 rjmp .+4 ; 0x39e + 39a: 55 95 asr r21 + 39c: 47 95 ror r20 + 39e: 2a 95 dec r18 + 3a0: e2 f7 brpl .-8 ; 0x39a + 3a2: 84 2f mov r24, r20 + 3a4: 08 95 ret + +000003a6 : + 3a6: 0f 93 push r16 + 3a8: 1f 93 push r17 + 3aa: cf 93 push r28 + 3ac: df 93 push r29 + 3ae: c0 e0 ldi r28, 0x00 ; 0 + 3b0: d0 e0 ldi r29, 0x00 ; 0 + 3b2: 04 e0 ldi r16, 0x04 ; 4 + 3b4: 10 e0 ldi r17, 0x00 ; 0 + 3b6: 80 91 8c 01 lds r24, 0x018C + 3ba: 28 2f mov r18, r24 + 3bc: 30 e0 ldi r19, 0x00 ; 0 + 3be: c2 17 cp r28, r18 + 3c0: d3 07 cpc r29, r19 + 3c2: ec f0 brlt .+58 ; 0x3fe + 3c4: c9 01 movw r24, r18 + 3c6: 03 96 adiw r24, 0x03 ; 3 + 3c8: 8c 17 cp r24, r28 + 3ca: 9d 07 cpc r25, r29 + 3cc: c4 f0 brlt .+48 ; 0x3fe + 3ce: ce 01 movw r24, r28 + 3d0: 82 1b sub r24, r18 + 3d2: 93 0b sbc r25, r19 + 3d4: e0 91 84 01 lds r30, 0x0184 + 3d8: f0 e0 ldi r31, 0x00 ; 0 + 3da: 20 91 8b 01 lds r18, 0x018B + 3de: ee 0f add r30, r30 + 3e0: ff 1f adc r31, r31 + 3e2: ee 0f add r30, r30 + 3e4: ff 1f adc r31, r31 + 3e6: e2 0f add r30, r18 + 3e8: f1 1d adc r31, r1 + 3ea: ee 0f add r30, r30 + 3ec: ff 1f adc r31, r31 + 3ee: ee 0f add r30, r30 + 3f0: ff 1f adc r31, r31 + 3f2: e8 0f add r30, r24 + 3f4: f9 1f adc r31, r25 + 3f6: ec 5c subi r30, 0xCC ; 204 + 3f8: fe 4f sbci r31, 0xFE ; 254 + 3fa: e0 81 ld r30, Z + 3fc: 01 c0 rjmp .+2 ; 0x400 + 3fe: e0 e0 ldi r30, 0x00 ; 0 + 400: 80 91 85 01 lds r24, 0x0185 + 404: 4e 2f mov r20, r30 + 406: 50 e0 ldi r21, 0x00 ; 0 + 408: 28 2f mov r18, r24 + 40a: 30 e0 ldi r19, 0x00 ; 0 + 40c: 85 30 cpi r24, 0x05 ; 5 + 40e: 48 f4 brcc .+18 ; 0x422 + 410: c8 01 movw r24, r16 + 412: 82 1b sub r24, r18 + 414: 93 0b sbc r25, r19 + 416: 02 c0 rjmp .+4 ; 0x41c + 418: 44 0f add r20, r20 + 41a: 55 1f adc r21, r21 + 41c: 8a 95 dec r24 + 41e: e2 f7 brpl .-8 ; 0x418 + 420: 07 c0 rjmp .+14 ; 0x430 + 422: 24 50 subi r18, 0x04 ; 4 + 424: 30 40 sbci r19, 0x00 ; 0 + 426: 02 c0 rjmp .+4 ; 0x42c + 428: 55 95 asr r21 + 42a: 47 95 ror r20 + 42c: 2a 95 dec r18 + 42e: e2 f7 brpl .-8 ; 0x428 + 430: ce 01 movw r24, r28 + 432: 8f 5f subi r24, 0xFF ; 255 + 434: 68 2f mov r22, r24 + 436: fe 01 movw r30, r28 + 438: ee 56 subi r30, 0x6E ; 110 + 43a: fe 4f sbci r31, 0xFE ; 254 + 43c: 80 81 ld r24, Z + 43e: 48 2b or r20, r24 + 440: 81 e0 ldi r24, 0x01 ; 1 + 442: 0e 94 8c 01 call 0x318 ; 0x318 + 446: 21 96 adiw r28, 0x01 ; 1 + 448: c8 30 cpi r28, 0x08 ; 8 + 44a: d1 05 cpc r29, r1 + 44c: 09 f0 breq .+2 ; 0x450 + 44e: b3 cf rjmp .-154 ; 0x3b6 + 450: df 91 pop r29 + 452: cf 91 pop r28 + 454: 1f 91 pop r17 + 456: 0f 91 pop r16 + 458: 08 95 ret + +0000045a : + 45a: 1f 93 push r17 + 45c: cf 93 push r28 + 45e: df 93 push r29 + 460: 10 91 85 01 lds r17, 0x0185 + 464: 81 2f mov r24, r17 + 466: 90 e0 ldi r25, 0x00 ; 0 + 468: 44 e0 ldi r20, 0x04 ; 4 + 46a: 50 e0 ldi r21, 0x00 ; 0 + 46c: 48 1b sub r20, r24 + 46e: 59 0b sbc r21, r25 + 470: ec 01 movw r28, r24 + 472: 24 97 sbiw r28, 0x04 ; 4 + 474: 80 91 8c 01 lds r24, 0x018C + 478: 30 91 8b 01 lds r19, 0x018B + 47c: 20 91 84 01 lds r18, 0x0184 + 480: e2 2f mov r30, r18 + 482: f0 e0 ldi r31, 0x00 ; 0 + 484: ee 0f add r30, r30 + 486: ff 1f adc r31, r31 + 488: ee 0f add r30, r30 + 48a: ff 1f adc r31, r31 + 48c: e3 0f add r30, r19 + 48e: f1 1d adc r31, r1 + 490: ee 0f add r30, r30 + 492: ff 1f adc r31, r31 + 494: ee 0f add r30, r30 + 496: ff 1f adc r31, r31 + 498: ec 5c subi r30, 0xCC ; 204 + 49a: fe 4f sbci r31, 0xFE ; 254 + 49c: 90 e0 ldi r25, 0x00 ; 0 + 49e: dc 01 movw r26, r24 + 4a0: ad 56 subi r26, 0x6D ; 109 + 4a2: be 4f sbci r27, 0xFE ; 254 + 4a4: bc 01 movw r22, r24 + 4a6: 69 56 subi r22, 0x69 ; 105 + 4a8: 7e 4f sbci r23, 0xFE ; 254 + 4aa: 80 81 ld r24, Z + 4ac: 28 2f mov r18, r24 + 4ae: 30 e0 ldi r19, 0x00 ; 0 + 4b0: 15 30 cpi r17, 0x05 ; 5 + 4b2: 38 f4 brcc .+14 ; 0x4c2 + 4b4: 04 2e mov r0, r20 + 4b6: 02 c0 rjmp .+4 ; 0x4bc + 4b8: 22 0f add r18, r18 + 4ba: 33 1f adc r19, r19 + 4bc: 0a 94 dec r0 + 4be: e2 f7 brpl .-8 ; 0x4b8 + 4c0: 06 c0 rjmp .+12 ; 0x4ce + 4c2: 0c 2e mov r0, r28 + 4c4: 02 c0 rjmp .+4 ; 0x4ca + 4c6: 35 95 asr r19 + 4c8: 27 95 ror r18 + 4ca: 0a 94 dec r0 + 4cc: e2 f7 brpl .-8 ; 0x4c6 + 4ce: 8c 91 ld r24, X + 4d0: 28 23 and r18, r24 + 4d2: 11 f0 breq .+4 ; 0x4d8 + 4d4: 81 e0 ldi r24, 0x01 ; 1 + 4d6: 06 c0 rjmp .+12 ; 0x4e4 + 4d8: 31 96 adiw r30, 0x01 ; 1 + 4da: 11 96 adiw r26, 0x01 ; 1 + 4dc: a6 17 cp r26, r22 + 4de: b7 07 cpc r27, r23 + 4e0: 21 f7 brne .-56 ; 0x4aa + 4e2: 80 e0 ldi r24, 0x00 ; 0 + 4e4: df 91 pop r29 + 4e6: cf 91 pop r28 + 4e8: 1f 91 pop r17 + 4ea: 08 95 ret + +000004ec : + 4ec: 1f 93 push r17 + 4ee: cf 93 push r28 + 4f0: df 93 push r29 + 4f2: 10 91 85 01 lds r17, 0x0185 + 4f6: 81 2f mov r24, r17 + 4f8: 90 e0 ldi r25, 0x00 ; 0 + 4fa: 44 e0 ldi r20, 0x04 ; 4 + 4fc: 50 e0 ldi r21, 0x00 ; 0 + 4fe: 48 1b sub r20, r24 + 500: 59 0b sbc r21, r25 + 502: ec 01 movw r28, r24 + 504: 24 97 sbiw r28, 0x04 ; 4 + 506: 80 91 8c 01 lds r24, 0x018C + 50a: 30 91 8b 01 lds r19, 0x018B + 50e: 20 91 84 01 lds r18, 0x0184 + 512: e2 2f mov r30, r18 + 514: f0 e0 ldi r31, 0x00 ; 0 + 516: ee 0f add r30, r30 + 518: ff 1f adc r31, r31 + 51a: ee 0f add r30, r30 + 51c: ff 1f adc r31, r31 + 51e: e3 0f add r30, r19 + 520: f1 1d adc r31, r1 + 522: ee 0f add r30, r30 + 524: ff 1f adc r31, r31 + 526: ee 0f add r30, r30 + 528: ff 1f adc r31, r31 + 52a: ec 5c subi r30, 0xCC ; 204 + 52c: fe 4f sbci r31, 0xFE ; 254 + 52e: 90 e0 ldi r25, 0x00 ; 0 + 530: dc 01 movw r26, r24 + 532: ae 56 subi r26, 0x6E ; 110 + 534: be 4f sbci r27, 0xFE ; 254 + 536: bc 01 movw r22, r24 + 538: 6a 56 subi r22, 0x6A ; 106 + 53a: 7e 4f sbci r23, 0xFE ; 254 + 53c: 80 81 ld r24, Z + 53e: 28 2f mov r18, r24 + 540: 30 e0 ldi r19, 0x00 ; 0 + 542: 15 30 cpi r17, 0x05 ; 5 + 544: 38 f4 brcc .+14 ; 0x554 <__stack+0x55> + 546: 04 2e mov r0, r20 + 548: 02 c0 rjmp .+4 ; 0x54e <__stack+0x4f> + 54a: 22 0f add r18, r18 + 54c: 33 1f adc r19, r19 + 54e: 0a 94 dec r0 + 550: e2 f7 brpl .-8 ; 0x54a <__stack+0x4b> + 552: 06 c0 rjmp .+12 ; 0x560 <__stack+0x61> + 554: 0c 2e mov r0, r28 + 556: 02 c0 rjmp .+4 ; 0x55c <__stack+0x5d> + 558: 35 95 asr r19 + 55a: 27 95 ror r18 + 55c: 0a 94 dec r0 + 55e: e2 f7 brpl .-8 ; 0x558 <__stack+0x59> + 560: 8c 91 ld r24, X + 562: 28 23 and r18, r24 + 564: 11 f0 breq .+4 ; 0x56a <__stack+0x6b> + 566: 81 e0 ldi r24, 0x01 ; 1 + 568: 06 c0 rjmp .+12 ; 0x576 <__stack+0x77> + 56a: 31 96 adiw r30, 0x01 ; 1 + 56c: 11 96 adiw r26, 0x01 ; 1 + 56e: a6 17 cp r26, r22 + 570: b7 07 cpc r27, r23 + 572: 21 f7 brne .-56 ; 0x53c <__stack+0x3d> + 574: 80 e0 ldi r24, 0x00 ; 0 + 576: df 91 pop r29 + 578: cf 91 pop r28 + 57a: 1f 91 pop r17 + 57c: 08 95 ret + +0000057e : + 57e: bf 92 push r11 + 580: cf 92 push r12 + 582: df 92 push r13 + 584: ef 92 push r14 + 586: ff 92 push r15 + 588: 0f 93 push r16 + 58a: 1f 93 push r17 + 58c: cf 93 push r28 + 58e: df 93 push r29 + 590: 50 91 85 01 lds r21, 0x0185 + 594: 85 2f mov r24, r21 + 596: 90 e0 ldi r25, 0x00 ; 0 + 598: 24 e0 ldi r18, 0x04 ; 4 + 59a: 30 e0 ldi r19, 0x00 ; 0 + 59c: 69 01 movw r12, r18 + 59e: c8 1a sub r12, r24 + 5a0: d9 0a sbc r13, r25 + 5a2: 0c ef ldi r16, 0xFC ; 252 + 5a4: e0 2e mov r14, r16 + 5a6: 0f ef ldi r16, 0xFF ; 255 + 5a8: f0 2e mov r15, r16 + 5aa: e8 0e add r14, r24 + 5ac: f9 1e adc r15, r25 + 5ae: b5 2e mov r11, r21 + 5b0: ba 94 dec r11 + 5b2: 8b 2d mov r24, r11 + 5b4: 90 e0 ldi r25, 0x00 ; 0 + 5b6: 89 01 movw r16, r18 + 5b8: 08 1b sub r16, r24 + 5ba: 19 0b sbc r17, r25 + 5bc: ec 01 movw r28, r24 + 5be: 24 97 sbiw r28, 0x04 ; 4 + 5c0: 80 91 8c 01 lds r24, 0x018C + 5c4: 30 91 8b 01 lds r19, 0x018B + 5c8: 20 91 84 01 lds r18, 0x0184 + 5cc: e2 2f mov r30, r18 + 5ce: f0 e0 ldi r31, 0x00 ; 0 + 5d0: ee 0f add r30, r30 + 5d2: ff 1f adc r31, r31 + 5d4: ee 0f add r30, r30 + 5d6: ff 1f adc r31, r31 + 5d8: e3 0f add r30, r19 + 5da: f1 1d adc r31, r1 + 5dc: ee 0f add r30, r30 + 5de: ff 1f adc r31, r31 + 5e0: ee 0f add r30, r30 + 5e2: ff 1f adc r31, r31 + 5e4: ec 5c subi r30, 0xCC ; 204 + 5e6: fe 4f sbci r31, 0xFE ; 254 + 5e8: 90 e0 ldi r25, 0x00 ; 0 + 5ea: dc 01 movw r26, r24 + 5ec: ae 56 subi r26, 0x6E ; 110 + 5ee: be 4f sbci r27, 0xFE ; 254 + 5f0: bc 01 movw r22, r24 + 5f2: 6a 56 subi r22, 0x6A ; 106 + 5f4: 7e 4f sbci r23, 0xFE ; 254 + 5f6: 40 81 ld r20, Z + 5f8: 24 2f mov r18, r20 + 5fa: 30 e0 ldi r19, 0x00 ; 0 + 5fc: 55 30 cpi r21, 0x05 ; 5 + 5fe: 38 f4 brcc .+14 ; 0x60e + 600: 0c 2c mov r0, r12 + 602: 02 c0 rjmp .+4 ; 0x608 + 604: 22 0f add r18, r18 + 606: 33 1f adc r19, r19 + 608: 0a 94 dec r0 + 60a: e2 f7 brpl .-8 ; 0x604 + 60c: 06 c0 rjmp .+12 ; 0x61a + 60e: 0e 2c mov r0, r14 + 610: 02 c0 rjmp .+4 ; 0x616 + 612: 35 95 asr r19 + 614: 27 95 ror r18 + 616: 0a 94 dec r0 + 618: e2 f7 brpl .-8 ; 0x612 + 61a: 27 fd sbrc r18, 7 + 61c: 1c c0 rjmp .+56 ; 0x656 + 61e: 24 2f mov r18, r20 + 620: 30 e0 ldi r19, 0x00 ; 0 + 622: 84 e0 ldi r24, 0x04 ; 4 + 624: 8b 15 cp r24, r11 + 626: 38 f0 brcs .+14 ; 0x636 + 628: 00 2e mov r0, r16 + 62a: 02 c0 rjmp .+4 ; 0x630 + 62c: 22 0f add r18, r18 + 62e: 33 1f adc r19, r19 + 630: 0a 94 dec r0 + 632: e2 f7 brpl .-8 ; 0x62c + 634: 06 c0 rjmp .+12 ; 0x642 + 636: 0c 2e mov r0, r28 + 638: 02 c0 rjmp .+4 ; 0x63e + 63a: 35 95 asr r19 + 63c: 27 95 ror r18 + 63e: 0a 94 dec r0 + 640: e2 f7 brpl .-8 ; 0x63a + 642: 8c 91 ld r24, X + 644: 28 23 and r18, r24 + 646: 39 f4 brne .+14 ; 0x656 + 648: 31 96 adiw r30, 0x01 ; 1 + 64a: 11 96 adiw r26, 0x01 ; 1 + 64c: a6 17 cp r26, r22 + 64e: b7 07 cpc r27, r23 + 650: 91 f6 brne .-92 ; 0x5f6 + 652: 80 e0 ldi r24, 0x00 ; 0 + 654: 01 c0 rjmp .+2 ; 0x658 + 656: 81 e0 ldi r24, 0x01 ; 1 + 658: df 91 pop r29 + 65a: cf 91 pop r28 + 65c: 1f 91 pop r17 + 65e: 0f 91 pop r16 + 660: ff 90 pop r15 + 662: ef 90 pop r14 + 664: df 90 pop r13 + 666: cf 90 pop r12 + 668: bf 90 pop r11 + 66a: 08 95 ret + +0000066c : + 66c: bf 92 push r11 + 66e: cf 92 push r12 + 670: df 92 push r13 + 672: ef 92 push r14 + 674: ff 92 push r15 + 676: 0f 93 push r16 + 678: 1f 93 push r17 + 67a: cf 93 push r28 + 67c: df 93 push r29 + 67e: 50 91 85 01 lds r21, 0x0185 + 682: 85 2f mov r24, r21 + 684: 90 e0 ldi r25, 0x00 ; 0 + 686: 24 e0 ldi r18, 0x04 ; 4 + 688: 30 e0 ldi r19, 0x00 ; 0 + 68a: 69 01 movw r12, r18 + 68c: c8 1a sub r12, r24 + 68e: d9 0a sbc r13, r25 + 690: 4c ef ldi r20, 0xFC ; 252 + 692: e4 2e mov r14, r20 + 694: 4f ef ldi r20, 0xFF ; 255 + 696: f4 2e mov r15, r20 + 698: e8 0e add r14, r24 + 69a: f9 1e adc r15, r25 + 69c: b5 2e mov r11, r21 + 69e: b3 94 inc r11 + 6a0: 8b 2d mov r24, r11 + 6a2: 90 e0 ldi r25, 0x00 ; 0 + 6a4: 89 01 movw r16, r18 + 6a6: 08 1b sub r16, r24 + 6a8: 19 0b sbc r17, r25 + 6aa: ec 01 movw r28, r24 + 6ac: 24 97 sbiw r28, 0x04 ; 4 + 6ae: 80 91 8c 01 lds r24, 0x018C + 6b2: 30 91 8b 01 lds r19, 0x018B + 6b6: 20 91 84 01 lds r18, 0x0184 + 6ba: e2 2f mov r30, r18 + 6bc: f0 e0 ldi r31, 0x00 ; 0 + 6be: ee 0f add r30, r30 + 6c0: ff 1f adc r31, r31 + 6c2: ee 0f add r30, r30 + 6c4: ff 1f adc r31, r31 + 6c6: e3 0f add r30, r19 + 6c8: f1 1d adc r31, r1 + 6ca: ee 0f add r30, r30 + 6cc: ff 1f adc r31, r31 + 6ce: ee 0f add r30, r30 + 6d0: ff 1f adc r31, r31 + 6d2: ec 5c subi r30, 0xCC ; 204 + 6d4: fe 4f sbci r31, 0xFE ; 254 + 6d6: 90 e0 ldi r25, 0x00 ; 0 + 6d8: dc 01 movw r26, r24 + 6da: ae 56 subi r26, 0x6E ; 110 + 6dc: be 4f sbci r27, 0xFE ; 254 + 6de: bc 01 movw r22, r24 + 6e0: 6a 56 subi r22, 0x6A ; 106 + 6e2: 7e 4f sbci r23, 0xFE ; 254 + 6e4: 40 81 ld r20, Z + 6e6: 24 2f mov r18, r20 + 6e8: 30 e0 ldi r19, 0x00 ; 0 + 6ea: 55 30 cpi r21, 0x05 ; 5 + 6ec: 38 f4 brcc .+14 ; 0x6fc + 6ee: 0c 2c mov r0, r12 + 6f0: 02 c0 rjmp .+4 ; 0x6f6 + 6f2: 22 0f add r18, r18 + 6f4: 33 1f adc r19, r19 + 6f6: 0a 94 dec r0 + 6f8: e2 f7 brpl .-8 ; 0x6f2 + 6fa: 06 c0 rjmp .+12 ; 0x708 + 6fc: 0e 2c mov r0, r14 + 6fe: 02 c0 rjmp .+4 ; 0x704 + 700: 35 95 asr r19 + 702: 27 95 ror r18 + 704: 0a 94 dec r0 + 706: e2 f7 brpl .-8 ; 0x700 + 708: 20 fd sbrc r18, 0 + 70a: 1c c0 rjmp .+56 ; 0x744 + 70c: 24 2f mov r18, r20 + 70e: 30 e0 ldi r19, 0x00 ; 0 + 710: 84 e0 ldi r24, 0x04 ; 4 + 712: 8b 15 cp r24, r11 + 714: 38 f0 brcs .+14 ; 0x724 + 716: 00 2e mov r0, r16 + 718: 02 c0 rjmp .+4 ; 0x71e + 71a: 22 0f add r18, r18 + 71c: 33 1f adc r19, r19 + 71e: 0a 94 dec r0 + 720: e2 f7 brpl .-8 ; 0x71a + 722: 06 c0 rjmp .+12 ; 0x730 + 724: 0c 2e mov r0, r28 + 726: 02 c0 rjmp .+4 ; 0x72c + 728: 35 95 asr r19 + 72a: 27 95 ror r18 + 72c: 0a 94 dec r0 + 72e: e2 f7 brpl .-8 ; 0x728 + 730: 8c 91 ld r24, X + 732: 28 23 and r18, r24 + 734: 39 f4 brne .+14 ; 0x744 + 736: 31 96 adiw r30, 0x01 ; 1 + 738: 11 96 adiw r26, 0x01 ; 1 + 73a: a6 17 cp r26, r22 + 73c: b7 07 cpc r27, r23 + 73e: 91 f6 brne .-92 ; 0x6e4 + 740: 80 e0 ldi r24, 0x00 ; 0 + 742: 01 c0 rjmp .+2 ; 0x746 + 744: 81 e0 ldi r24, 0x01 ; 1 + 746: df 91 pop r29 + 748: cf 91 pop r28 + 74a: 1f 91 pop r17 + 74c: 0f 91 pop r16 + 74e: ff 90 pop r15 + 750: ef 90 pop r14 + 752: df 90 pop r13 + 754: cf 90 pop r12 + 756: bf 90 pop r11 + 758: 08 95 ret + +0000075a : + 75a: 0f 93 push r16 + 75c: 1f 93 push r17 + 75e: cf 93 push r28 + 760: df 93 push r29 + 762: 80 91 8b 01 lds r24, 0x018B + 766: 83 30 cpi r24, 0x03 ; 3 + 768: 10 f0 brcs .+4 ; 0x76e + 76a: 20 e0 ldi r18, 0x00 ; 0 + 76c: 02 c0 rjmp .+4 ; 0x772 + 76e: 28 2f mov r18, r24 + 770: 2f 5f subi r18, 0xFF ; 255 + 772: 50 91 84 01 lds r21, 0x0184 + 776: 40 91 85 01 lds r20, 0x0185 + 77a: 84 2f mov r24, r20 + 77c: 90 e0 ldi r25, 0x00 ; 0 + 77e: 64 e0 ldi r22, 0x04 ; 4 + 780: 70 e0 ldi r23, 0x00 ; 0 + 782: 68 1b sub r22, r24 + 784: 79 0b sbc r23, r25 + 786: 8c 01 movw r16, r24 + 788: 04 50 subi r16, 0x04 ; 4 + 78a: 10 40 sbci r17, 0x00 ; 0 + 78c: 80 91 8c 01 lds r24, 0x018C + 790: e5 2f mov r30, r21 + 792: f0 e0 ldi r31, 0x00 ; 0 + 794: ee 0f add r30, r30 + 796: ff 1f adc r31, r31 + 798: ee 0f add r30, r30 + 79a: ff 1f adc r31, r31 + 79c: e2 0f add r30, r18 + 79e: f1 1d adc r31, r1 + 7a0: ee 0f add r30, r30 + 7a2: ff 1f adc r31, r31 + 7a4: ee 0f add r30, r30 + 7a6: ff 1f adc r31, r31 + 7a8: ec 5c subi r30, 0xCC ; 204 + 7aa: fe 4f sbci r31, 0xFE ; 254 + 7ac: 90 e0 ldi r25, 0x00 ; 0 + 7ae: dc 01 movw r26, r24 + 7b0: ae 56 subi r26, 0x6E ; 110 + 7b2: be 4f sbci r27, 0xFE ; 254 + 7b4: ec 01 movw r28, r24 + 7b6: ca 56 subi r28, 0x6A ; 106 + 7b8: de 4f sbci r29, 0xFE ; 254 + 7ba: 80 81 ld r24, Z + 7bc: 28 2f mov r18, r24 + 7be: 30 e0 ldi r19, 0x00 ; 0 + 7c0: 45 30 cpi r20, 0x05 ; 5 + 7c2: 38 f4 brcc .+14 ; 0x7d2 + 7c4: 06 2e mov r0, r22 + 7c6: 02 c0 rjmp .+4 ; 0x7cc + 7c8: 22 0f add r18, r18 + 7ca: 33 1f adc r19, r19 + 7cc: 0a 94 dec r0 + 7ce: e2 f7 brpl .-8 ; 0x7c8 + 7d0: 06 c0 rjmp .+12 ; 0x7de + 7d2: 00 2e mov r0, r16 + 7d4: 02 c0 rjmp .+4 ; 0x7da + 7d6: 35 95 asr r19 + 7d8: 27 95 ror r18 + 7da: 0a 94 dec r0 + 7dc: e2 f7 brpl .-8 ; 0x7d6 + 7de: 51 30 cpi r21, 0x01 ; 1 + 7e0: 31 f0 breq .+12 ; 0x7ee + 7e2: 52 30 cpi r21, 0x02 ; 2 + 7e4: 11 f0 breq .+4 ; 0x7ea + 7e6: 53 30 cpi r21, 0x03 ; 3 + 7e8: 29 f4 brne .+10 ; 0x7f4 + 7ea: 41 30 cpi r20, 0x01 ; 1 + 7ec: 99 f0 breq .+38 ; 0x814 + 7ee: 48 30 cpi r20, 0x08 ; 8 + 7f0: 39 f4 brne .+14 ; 0x800 + 7f2: 10 c0 rjmp .+32 ; 0x814 + 7f4: 54 30 cpi r21, 0x04 ; 4 + 7f6: 21 f4 brne .+8 ; 0x800 + 7f8: 42 30 cpi r20, 0x02 ; 2 + 7fa: 61 f0 breq .+24 ; 0x814 + 7fc: 47 30 cpi r20, 0x07 ; 7 + 7fe: 51 f0 breq .+20 ; 0x814 + 800: 8c 91 ld r24, X + 802: 28 23 and r18, r24 + 804: 39 f4 brne .+14 ; 0x814 + 806: 31 96 adiw r30, 0x01 ; 1 + 808: 11 96 adiw r26, 0x01 ; 1 + 80a: ac 17 cp r26, r28 + 80c: bd 07 cpc r27, r29 + 80e: a9 f6 brne .-86 ; 0x7ba + 810: 80 e0 ldi r24, 0x00 ; 0 + 812: 01 c0 rjmp .+2 ; 0x816 + 814: 81 e0 ldi r24, 0x01 ; 1 + 816: df 91 pop r29 + 818: cf 91 pop r28 + 81a: 1f 91 pop r17 + 81c: 0f 91 pop r16 + 81e: 08 95 ret + +00000820 : + 820: cf 92 push r12 + 822: df 92 push r13 + 824: ef 92 push r14 + 826: ff 92 push r15 + 828: 0f 93 push r16 + 82a: 1f 93 push r17 + 82c: df 93 push r29 + 82e: cf 93 push r28 + 830: 00 d0 rcall .+0 ; 0x832 + 832: cd b7 in r28, 0x3d ; 61 + 834: de b7 in r29, 0x3e ; 62 + 836: 80 91 8c 01 lds r24, 0x018C + 83a: b7 e0 ldi r27, 0x07 ; 7 + 83c: eb 2e mov r14, r27 + 83e: e8 22 and r14, r24 + 840: e3 94 inc r14 + 842: 00 e0 ldi r16, 0x00 ; 0 + 844: 10 e0 ldi r17, 0x00 ; 0 + 846: 86 95 lsr r24 + 848: 86 95 lsr r24 + 84a: 86 95 lsr r24 + 84c: c8 2e mov r12, r24 + 84e: c3 94 inc r12 + 850: d0 2e mov r13, r16 + 852: 80 91 8c 01 lds r24, 0x018C + 856: f8 01 movw r30, r16 + 858: e8 0f add r30, r24 + 85a: f1 1d adc r31, r1 + 85c: e8 30 cpi r30, 0x08 ; 8 + 85e: f1 05 cpc r31, r1 + 860: 0c f0 brlt .+2 ; 0x864 + 862: 6b c0 rjmp .+214 ; 0x93a + 864: ee 56 subi r30, 0x6E ; 110 + 866: fe 4f sbci r31, 0xFE ; 254 + 868: 80 81 ld r24, Z + 86a: 8f 3f cpi r24, 0xFF ; 255 + 86c: 09 f0 breq .+2 ; 0x870 + 86e: 65 c0 rjmp .+202 ; 0x93a + 870: ff 24 eor r15, r15 + 872: 8c 2d mov r24, r12 + 874: 6e 2d mov r22, r14 + 876: 40 e0 ldi r20, 0x00 ; 0 + 878: 0e 94 8c 01 call 0x318 ; 0x318 + 87c: 28 ee ldi r18, 0xE8 ; 232 + 87e: 33 e0 ldi r19, 0x03 ; 3 + 880: 1a 82 std Y+2, r1 ; 0x02 + 882: 19 82 std Y+1, r1 ; 0x01 + 884: 05 c0 rjmp .+10 ; 0x890 + 886: 89 81 ldd r24, Y+1 ; 0x01 + 888: 9a 81 ldd r25, Y+2 ; 0x02 + 88a: 01 96 adiw r24, 0x01 ; 1 + 88c: 9a 83 std Y+2, r25 ; 0x02 + 88e: 89 83 std Y+1, r24 ; 0x01 + 890: 89 81 ldd r24, Y+1 ; 0x01 + 892: 9a 81 ldd r25, Y+2 ; 0x02 + 894: 8b 35 cpi r24, 0x5B ; 91 + 896: 91 05 cpc r25, r1 + 898: b1 f7 brne .-20 ; 0x886 + 89a: 21 50 subi r18, 0x01 ; 1 + 89c: 30 40 sbci r19, 0x00 ; 0 + 89e: 81 f7 brne .-32 ; 0x880 + 8a0: 8c 2d mov r24, r12 + 8a2: 6e 2d mov r22, r14 + 8a4: 4f ef ldi r20, 0xFF ; 255 + 8a6: 0e 94 8c 01 call 0x318 ; 0x318 + 8aa: 28 ee ldi r18, 0xE8 ; 232 + 8ac: 33 e0 ldi r19, 0x03 ; 3 + 8ae: 1a 82 std Y+2, r1 ; 0x02 + 8b0: 19 82 std Y+1, r1 ; 0x01 + 8b2: 05 c0 rjmp .+10 ; 0x8be + 8b4: 89 81 ldd r24, Y+1 ; 0x01 + 8b6: 9a 81 ldd r25, Y+2 ; 0x02 + 8b8: 01 96 adiw r24, 0x01 ; 1 + 8ba: 9a 83 std Y+2, r25 ; 0x02 + 8bc: 89 83 std Y+1, r24 ; 0x01 + 8be: 89 81 ldd r24, Y+1 ; 0x01 + 8c0: 9a 81 ldd r25, Y+2 ; 0x02 + 8c2: 8b 35 cpi r24, 0x5B ; 91 + 8c4: 91 05 cpc r25, r1 + 8c6: b1 f7 brne .-20 ; 0x8b4 + 8c8: 21 50 subi r18, 0x01 ; 1 + 8ca: 30 40 sbci r19, 0x00 ; 0 + 8cc: 81 f7 brne .-32 ; 0x8ae + 8ce: f3 94 inc r15 + 8d0: 83 e0 ldi r24, 0x03 ; 3 + 8d2: f8 16 cp r15, r24 + 8d4: 71 f6 brne .-100 ; 0x872 + 8d6: 90 91 8c 01 lds r25, 0x018C + 8da: 9d 0d add r25, r13 + 8dc: 08 c0 rjmp .+16 ; 0x8ee + 8de: e9 2f mov r30, r25 + 8e0: f0 e0 ldi r31, 0x00 ; 0 + 8e2: ee 56 subi r30, 0x6E ; 110 + 8e4: fe 4f sbci r31, 0xFE ; 254 + 8e6: 82 91 ld r24, -Z + 8e8: 31 96 adiw r30, 0x01 ; 1 + 8ea: 80 83 st Z, r24 + 8ec: 91 50 subi r25, 0x01 ; 1 + 8ee: 99 23 and r25, r25 + 8f0: b1 f7 brne .-20 ; 0x8de + 8f2: 0e 94 39 01 call 0x272 ; 0x272 + 8f6: e0 e0 ldi r30, 0x00 ; 0 + 8f8: f1 e0 ldi r31, 0x01 ; 1 + 8fa: 07 c0 rjmp .+14 ; 0x90a + 8fc: 80 91 c0 00 lds r24, 0x00C0 + 900: 85 ff sbrs r24, 5 + 902: fc cf rjmp .-8 ; 0x8fc + 904: 90 93 c6 00 sts 0x00C6, r25 + 908: 31 96 adiw r30, 0x01 ; 1 + 90a: 90 81 ld r25, Z + 90c: 99 23 and r25, r25 + 90e: b1 f7 brne .-20 ; 0x8fc + 910: 80 91 86 01 lds r24, 0x0186 + 914: 8f 5f subi r24, 0xFF ; 255 + 916: 80 93 86 01 sts 0x0186, r24 + 91a: 81 50 subi r24, 0x01 ; 1 + 91c: 0e 94 9c 00 call 0x138 ; 0x138 + 920: e8 e0 ldi r30, 0x08 ; 8 + 922: f1 e0 ldi r31, 0x01 ; 1 + 924: 07 c0 rjmp .+14 ; 0x934 + 926: 80 91 c0 00 lds r24, 0x00C0 + 92a: 85 ff sbrs r24, 5 + 92c: fc cf rjmp .-8 ; 0x926 + 92e: 90 93 c6 00 sts 0x00C6, r25 + 932: 31 96 adiw r30, 0x01 ; 1 + 934: 90 81 ld r25, Z + 936: 99 23 and r25, r25 + 938: b1 f7 brne .-20 ; 0x926 + 93a: 0f 5f subi r16, 0xFF ; 255 + 93c: 1f 4f sbci r17, 0xFF ; 255 + 93e: e3 94 inc r14 + 940: 04 30 cpi r16, 0x04 ; 4 + 942: 11 05 cpc r17, r1 + 944: 09 f0 breq .+2 ; 0x948 + 946: 84 cf rjmp .-248 ; 0x850 + 948: 0f 90 pop r0 + 94a: 0f 90 pop r0 + 94c: cf 91 pop r28 + 94e: df 91 pop r29 + 950: 1f 91 pop r17 + 952: 0f 91 pop r16 + 954: ff 90 pop r15 + 956: ef 90 pop r14 + 958: df 90 pop r13 + 95a: cf 90 pop r12 + 95c: 08 95 ret + +0000095e : + 95e: af 92 push r10 + 960: bf 92 push r11 + 962: cf 92 push r12 + 964: df 92 push r13 + 966: ff 92 push r15 + 968: 0f 93 push r16 + 96a: 1f 93 push r17 + 96c: df 93 push r29 + 96e: cf 93 push r28 + 970: 00 d0 rcall .+0 ; 0x972 + 972: 00 d0 rcall .+0 ; 0x974 + 974: 0f 92 push r0 + 976: cd b7 in r28, 0x3d ; 61 + 978: de b7 in r29, 0x3e ; 62 + 97a: de 01 movw r26, r28 + 97c: 13 96 adiw r26, 0x03 ; 3 + 97e: e7 e8 ldi r30, 0x87 ; 135 + 980: f1 e0 ldi r31, 0x01 ; 1 + 982: 83 e0 ldi r24, 0x03 ; 3 + 984: 01 90 ld r0, Z+ + 986: 0d 92 st X+, r0 + 988: 81 50 subi r24, 0x01 ; 1 + 98a: e1 f7 brne .-8 ; 0x984 + 98c: 10 e0 ldi r17, 0x00 ; 0 + 98e: 1f 5f subi r17, 0xFF ; 255 + 990: 81 e0 ldi r24, 0x01 ; 1 + 992: 61 2f mov r22, r17 + 994: 4f ef ldi r20, 0xFF ; 255 + 996: 0e 94 8c 01 call 0x318 ; 0x318 + 99a: 24 ef ldi r18, 0xF4 ; 244 + 99c: 31 e0 ldi r19, 0x01 ; 1 + 99e: 1a 82 std Y+2, r1 ; 0x02 + 9a0: 19 82 std Y+1, r1 ; 0x01 + 9a2: 05 c0 rjmp .+10 ; 0x9ae + 9a4: 89 81 ldd r24, Y+1 ; 0x01 + 9a6: 9a 81 ldd r25, Y+2 ; 0x02 + 9a8: 01 96 adiw r24, 0x01 ; 1 + 9aa: 9a 83 std Y+2, r25 ; 0x02 + 9ac: 89 83 std Y+1, r24 ; 0x01 + 9ae: 89 81 ldd r24, Y+1 ; 0x01 + 9b0: 9a 81 ldd r25, Y+2 ; 0x02 + 9b2: 8b 35 cpi r24, 0x5B ; 91 + 9b4: 91 05 cpc r25, r1 + 9b6: b1 f7 brne .-20 ; 0x9a4 + 9b8: 21 50 subi r18, 0x01 ; 1 + 9ba: 30 40 sbci r19, 0x00 ; 0 + 9bc: 81 f7 brne .-32 ; 0x99e + 9be: 18 30 cpi r17, 0x08 ; 8 + 9c0: 31 f7 brne .-52 ; 0x98e + 9c2: 02 e9 ldi r16, 0x92 ; 146 + 9c4: 11 e0 ldi r17, 0x01 ; 1 + 9c6: ff 24 eor r15, r15 + 9c8: f3 94 inc r15 + 9ca: 81 e0 ldi r24, 0x01 ; 1 + 9cc: 6f 2d mov r22, r15 + 9ce: 40 e0 ldi r20, 0x00 ; 0 + 9d0: 0e 94 8c 01 call 0x318 ; 0x318 + 9d4: f8 01 movw r30, r16 + 9d6: 10 82 st Z, r1 + 9d8: 24 ef ldi r18, 0xF4 ; 244 + 9da: 31 e0 ldi r19, 0x01 ; 1 + 9dc: 1a 82 std Y+2, r1 ; 0x02 + 9de: 19 82 std Y+1, r1 ; 0x01 + 9e0: 05 c0 rjmp .+10 ; 0x9ec + 9e2: 89 81 ldd r24, Y+1 ; 0x01 + 9e4: 9a 81 ldd r25, Y+2 ; 0x02 + 9e6: 01 96 adiw r24, 0x01 ; 1 + 9e8: 9a 83 std Y+2, r25 ; 0x02 + 9ea: 89 83 std Y+1, r24 ; 0x01 + 9ec: 89 81 ldd r24, Y+1 ; 0x01 + 9ee: 9a 81 ldd r25, Y+2 ; 0x02 + 9f0: 8b 35 cpi r24, 0x5B ; 91 + 9f2: 91 05 cpc r25, r1 + 9f4: b1 f7 brne .-20 ; 0x9e2 + 9f6: 21 50 subi r18, 0x01 ; 1 + 9f8: 30 40 sbci r19, 0x00 ; 0 + 9fa: 81 f7 brne .-32 ; 0x9dc + 9fc: 0f 5f subi r16, 0xFF ; 255 + 9fe: 1f 4f sbci r17, 0xFF ; 255 + a00: f8 e0 ldi r31, 0x08 ; 8 + a02: ff 16 cp r15, r31 + a04: 09 f7 brne .-62 ; 0x9c8 + a06: ff 24 eor r15, r15 + a08: 13 e0 ldi r17, 0x03 ; 3 + a0a: a1 2e mov r10, r17 + a0c: b1 2c mov r11, r1 + a0e: ac 0e add r10, r28 + a10: bd 1e adc r11, r29 + a12: 32 c0 rjmp .+100 ; 0xa78 + a14: 00 e0 ldi r16, 0x00 ; 0 + a16: 10 e0 ldi r17, 0x00 ; 0 + a18: cf 2c mov r12, r15 + a1a: dd 24 eor r13, r13 + a1c: 20 2f mov r18, r16 + a1e: 2f 5f subi r18, 0xFF ; 255 + a20: c8 01 movw r24, r16 + a22: 8c 0d add r24, r12 + a24: 9d 1d adc r25, r13 + a26: 63 e0 ldi r22, 0x03 ; 3 + a28: 70 e0 ldi r23, 0x00 ; 0 + a2a: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + a2e: f5 01 movw r30, r10 + a30: e8 0f add r30, r24 + a32: f9 1f adc r31, r25 + a34: 81 e0 ldi r24, 0x01 ; 1 + a36: 62 2f mov r22, r18 + a38: 40 81 ld r20, Z + a3a: 0e 94 8c 01 call 0x318 ; 0x318 + a3e: 0f 5f subi r16, 0xFF ; 255 + a40: 1f 4f sbci r17, 0xFF ; 255 + a42: 08 30 cpi r16, 0x08 ; 8 + a44: 11 05 cpc r17, r1 + a46: 51 f7 brne .-44 ; 0xa1c + a48: 81 e0 ldi r24, 0x01 ; 1 + a4a: 8f 15 cp r24, r15 + a4c: 10 f4 brcc .+4 ; 0xa52 + a4e: ff 24 eor r15, r15 + a50: 01 c0 rjmp .+2 ; 0xa54 + a52: f3 94 inc r15 + a54: 28 ee ldi r18, 0xE8 ; 232 + a56: 33 e0 ldi r19, 0x03 ; 3 + a58: 1a 82 std Y+2, r1 ; 0x02 + a5a: 19 82 std Y+1, r1 ; 0x01 + a5c: 05 c0 rjmp .+10 ; 0xa68 + a5e: 89 81 ldd r24, Y+1 ; 0x01 + a60: 9a 81 ldd r25, Y+2 ; 0x02 + a62: 01 96 adiw r24, 0x01 ; 1 + a64: 9a 83 std Y+2, r25 ; 0x02 + a66: 89 83 std Y+1, r24 ; 0x01 + a68: 89 81 ldd r24, Y+1 ; 0x01 + a6a: 9a 81 ldd r25, Y+2 ; 0x02 + a6c: 8b 35 cpi r24, 0x5B ; 91 + a6e: 91 05 cpc r25, r1 + a70: b1 f7 brne .-20 ; 0xa5e + a72: 21 50 subi r18, 0x01 ; 1 + a74: 30 40 sbci r19, 0x00 ; 0 + a76: 81 f7 brne .-32 ; 0xa58 + a78: 80 91 9d 01 lds r24, 0x019D + a7c: 88 23 and r24, r24 + a7e: 51 f2 breq .-108 ; 0xa14 + a80: 81 e0 ldi r24, 0x01 ; 1 + a82: 80 93 86 01 sts 0x0186, r24 + a86: e2 e1 ldi r30, 0x12 ; 18 + a88: f1 e0 ldi r31, 0x01 ; 1 + a8a: 07 c0 rjmp .+14 ; 0xa9a + a8c: 80 91 c0 00 lds r24, 0x00C0 + a90: 85 ff sbrs r24, 5 + a92: fc cf rjmp .-8 ; 0xa8c + a94: 90 93 c6 00 sts 0x00C6, r25 + a98: 31 96 adiw r30, 0x01 ; 1 + a9a: 90 81 ld r25, Z + a9c: 99 23 and r25, r25 + a9e: b1 f7 brne .-20 ; 0xa8c + aa0: 80 91 8d 01 lds r24, 0x018D + aa4: 90 91 8e 01 lds r25, 0x018E + aa8: 65 e0 ldi r22, 0x05 ; 5 + aaa: 70 e0 ldi r23, 0x00 ; 0 + aac: 0e 94 be 06 call 0xd7c ; 0xd7c <__udivmodhi4> + ab0: 80 93 84 01 sts 0x0184, r24 + ab4: 10 92 8b 01 sts 0x018B, r1 + ab8: 0f 90 pop r0 + aba: 0f 90 pop r0 + abc: 0f 90 pop r0 + abe: 0f 90 pop r0 + ac0: 0f 90 pop r0 + ac2: cf 91 pop r28 + ac4: df 91 pop r29 + ac6: 1f 91 pop r17 + ac8: 0f 91 pop r16 + aca: ff 90 pop r15 + acc: df 90 pop r13 + ace: cf 90 pop r12 + ad0: bf 90 pop r11 + ad2: af 90 pop r10 + ad4: 08 95 ret + +00000ad6 : + ad6: 1f 93 push r17 + ad8: cf 93 push r28 + ada: df 93 push r29 + adc: 10 91 85 01 lds r17, 0x0185 + ae0: 81 2f mov r24, r17 + ae2: 90 e0 ldi r25, 0x00 ; 0 + ae4: 44 e0 ldi r20, 0x04 ; 4 + ae6: 50 e0 ldi r21, 0x00 ; 0 + ae8: 48 1b sub r20, r24 + aea: 59 0b sbc r21, r25 + aec: ec 01 movw r28, r24 + aee: 24 97 sbiw r28, 0x04 ; 4 + af0: 80 91 8c 01 lds r24, 0x018C + af4: 30 91 8b 01 lds r19, 0x018B + af8: 20 91 84 01 lds r18, 0x0184 + afc: e2 2f mov r30, r18 + afe: f0 e0 ldi r31, 0x00 ; 0 + b00: ee 0f add r30, r30 + b02: ff 1f adc r31, r31 + b04: ee 0f add r30, r30 + b06: ff 1f adc r31, r31 + b08: e3 0f add r30, r19 + b0a: f1 1d adc r31, r1 + b0c: ee 0f add r30, r30 + b0e: ff 1f adc r31, r31 + b10: ee 0f add r30, r30 + b12: ff 1f adc r31, r31 + b14: ec 5c subi r30, 0xCC ; 204 + b16: fe 4f sbci r31, 0xFE ; 254 + b18: 90 e0 ldi r25, 0x00 ; 0 + b1a: dc 01 movw r26, r24 + b1c: ae 56 subi r26, 0x6E ; 110 + b1e: be 4f sbci r27, 0xFE ; 254 + b20: bc 01 movw r22, r24 + b22: 6a 56 subi r22, 0x6A ; 106 + b24: 7e 4f sbci r23, 0xFE ; 254 + b26: 80 81 ld r24, Z + b28: 28 2f mov r18, r24 + b2a: 30 e0 ldi r19, 0x00 ; 0 + b2c: 15 30 cpi r17, 0x05 ; 5 + b2e: 38 f4 brcc .+14 ; 0xb3e + b30: 04 2e mov r0, r20 + b32: 02 c0 rjmp .+4 ; 0xb38 + b34: 22 0f add r18, r18 + b36: 33 1f adc r19, r19 + b38: 0a 94 dec r0 + b3a: e2 f7 brpl .-8 ; 0xb34 + b3c: 06 c0 rjmp .+12 ; 0xb4a + b3e: 0c 2e mov r0, r28 + b40: 02 c0 rjmp .+4 ; 0xb46 + b42: 35 95 asr r19 + b44: 27 95 ror r18 + b46: 0a 94 dec r0 + b48: e2 f7 brpl .-8 ; 0xb42 + b4a: 8c 91 ld r24, X + b4c: 82 2b or r24, r18 + b4e: 8d 93 st X+, r24 + b50: 31 96 adiw r30, 0x01 ; 1 + b52: a6 17 cp r26, r22 + b54: b7 07 cpc r27, r23 + b56: 39 f7 brne .-50 ; 0xb26 + b58: 0e 94 10 04 call 0x820 ; 0x820 + b5c: 10 92 8c 01 sts 0x018C, r1 + b60: 10 92 8b 01 sts 0x018B, r1 + b64: 84 e0 ldi r24, 0x04 ; 4 + b66: 80 93 85 01 sts 0x0185, r24 + b6a: 80 91 91 01 lds r24, 0x0191 + b6e: 80 93 84 01 sts 0x0184, r24 + b72: 0e 94 76 02 call 0x4ec ; 0x4ec + b76: 81 30 cpi r24, 0x01 ; 1 + b78: 19 f0 breq .+6 ; 0xb80 + b7a: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + b7e: 02 c0 rjmp .+4 ; 0xb84 + b80: 0e 94 af 04 call 0x95e ; 0x95e + b84: df 91 pop r29 + b86: cf 91 pop r28 + b88: 1f 91 pop r17 + b8a: 08 95 ret + +00000b8c
: + b8c: 1f 93 push r17 + b8e: 23 9a sbi 0x04, 3 ; 4 + b90: 25 9a sbi 0x04, 5 ; 4 + b92: 24 9a sbi 0x04, 4 ; 4 + b94: 22 9a sbi 0x04, 2 ; 4 + b96: 81 e0 ldi r24, 0x01 ; 1 + b98: 60 91 31 01 lds r22, 0x0131 + b9c: 47 e0 ldi r20, 0x07 ; 7 + b9e: 0e 94 8c 01 call 0x318 ; 0x318 + ba2: 81 e0 ldi r24, 0x01 ; 1 + ba4: 60 91 2f 01 lds r22, 0x012F + ba8: 40 e0 ldi r20, 0x00 ; 0 + baa: 0e 94 8c 01 call 0x318 ; 0x318 + bae: 81 e0 ldi r24, 0x01 ; 1 + bb0: 60 91 32 01 lds r22, 0x0132 + bb4: 41 e0 ldi r20, 0x01 ; 1 + bb6: 0e 94 8c 01 call 0x318 ; 0x318 + bba: 81 e0 ldi r24, 0x01 ; 1 + bbc: 60 91 33 01 lds r22, 0x0133 + bc0: 40 e0 ldi r20, 0x00 ; 0 + bc2: 0e 94 8c 01 call 0x318 ; 0x318 + bc6: 10 e0 ldi r17, 0x00 ; 0 + bc8: 1f 5f subi r17, 0xFF ; 255 + bca: 81 e0 ldi r24, 0x01 ; 1 + bcc: 61 2f mov r22, r17 + bce: 40 e0 ldi r20, 0x00 ; 0 + bd0: 0e 94 8c 01 call 0x318 ; 0x318 + bd4: 18 30 cpi r17, 0x08 ; 8 + bd6: c1 f7 brne .-16 ; 0xbc8 + bd8: 81 e0 ldi r24, 0x01 ; 1 + bda: 60 91 30 01 lds r22, 0x0130 + bde: 4f e0 ldi r20, 0x0F ; 15 + be0: 0e 94 8c 01 call 0x318 ; 0x318 + be4: 87 e6 ldi r24, 0x67 ; 103 + be6: 90 e0 ldi r25, 0x00 ; 0 + be8: 90 93 c5 00 sts 0x00C5, r25 + bec: 80 93 c4 00 sts 0x00C4, r24 + bf0: 86 e0 ldi r24, 0x06 ; 6 + bf2: 80 93 c2 00 sts 0x00C2, r24 + bf6: 80 91 c1 00 lds r24, 0x00C1 + bfa: 88 61 ori r24, 0x18 ; 24 + bfc: 80 93 c1 00 sts 0x00C1, r24 + c00: 80 91 c1 00 lds r24, 0x00C1 + c04: 80 68 ori r24, 0x80 ; 128 + c06: 80 93 c1 00 sts 0x00C1, r24 + c0a: 78 94 sei + c0c: 8f ef ldi r24, 0xFF ; 255 + c0e: 80 93 9a 01 sts 0x019A, r24 + c12: 80 91 8d 01 lds r24, 0x018D + c16: 83 70 andi r24, 0x03 ; 3 + c18: 80 93 84 01 sts 0x0184, r24 + c1c: e2 e1 ldi r30, 0x12 ; 18 + c1e: f1 e0 ldi r31, 0x01 ; 1 + c20: 07 c0 rjmp .+14 ; 0xc30 + c22: 80 91 c0 00 lds r24, 0x00C0 + c26: 85 ff sbrs r24, 5 + c28: fc cf rjmp .-8 ; 0xc22 + c2a: 90 93 c6 00 sts 0x00C6, r25 + c2e: 31 96 adiw r30, 0x01 ; 1 + c30: 90 81 ld r25, Z + c32: 99 23 and r25, r25 + c34: b1 f7 brne .-20 ; 0xc22 + c36: 60 91 8d 01 lds r22, 0x018D + c3a: 70 91 8e 01 lds r23, 0x018E + c3e: 80 91 8f 01 lds r24, 0x018F + c42: 90 91 90 01 lds r25, 0x0190 + c46: 20 e2 ldi r18, 0x20 ; 32 + c48: 3e e4 ldi r19, 0x4E ; 78 + c4a: 40 e0 ldi r20, 0x00 ; 0 + c4c: 50 e0 ldi r21, 0x00 ; 0 + c4e: 0e 94 e5 06 call 0xdca ; 0xdca <__udivmodsi4> + c52: 61 15 cp r22, r1 + c54: 71 05 cpc r23, r1 + c56: 81 05 cpc r24, r1 + c58: 91 05 cpc r25, r1 + c5a: 09 f5 brne .+66 ; 0xc9e + c5c: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + c60: 0e 94 2d 02 call 0x45a ; 0x45a + c64: 81 30 cpi r24, 0x01 ; 1 + c66: 31 f0 breq .+12 ; 0xc74 + c68: 80 91 8c 01 lds r24, 0x018C + c6c: 8f 5f subi r24, 0xFF ; 255 + c6e: 80 93 8c 01 sts 0x018C, r24 + c72: 15 c0 rjmp .+42 ; 0xc9e + c74: 90 91 9b 01 lds r25, 0x019B + c78: 80 91 91 01 lds r24, 0x0191 + c7c: 98 17 cp r25, r24 + c7e: 19 f4 brne .+6 ; 0xc86 + c80: 9f 5f subi r25, 0xFF ; 255 + c82: 90 93 91 01 sts 0x0191, r25 + c86: 80 91 91 01 lds r24, 0x0191 + c8a: 86 30 cpi r24, 0x06 ; 6 + c8c: 10 f0 brcs .+4 ; 0xc92 + c8e: 10 92 91 01 sts 0x0191, r1 + c92: 80 91 91 01 lds r24, 0x0191 + c96: 80 93 9b 01 sts 0x019B, r24 + c9a: 0e 94 6b 05 call 0xad6 ; 0xad6 + c9e: 20 91 8d 01 lds r18, 0x018D + ca2: 30 91 8e 01 lds r19, 0x018E + ca6: 40 91 8f 01 lds r20, 0x018F + caa: 50 91 90 01 lds r21, 0x0190 + cae: 2f 5f subi r18, 0xFF ; 255 + cb0: 3f 4f sbci r19, 0xFF ; 255 + cb2: 4f 4f sbci r20, 0xFF ; 255 + cb4: 5f 4f sbci r21, 0xFF ; 255 + cb6: 20 93 8d 01 sts 0x018D, r18 + cba: 30 93 8e 01 sts 0x018E, r19 + cbe: 40 93 8f 01 sts 0x018F, r20 + cc2: 50 93 90 01 sts 0x0190, r21 + cc6: 90 91 9d 01 lds r25, 0x019D + cca: 80 91 9c 01 lds r24, 0x019C + cce: 98 17 cp r25, r24 + cd0: 09 f4 brne .+2 ; 0xcd4 + cd2: b1 cf rjmp .-158 ; 0xc36 + cd4: 80 91 9d 01 lds r24, 0x019D + cd8: 80 93 9c 01 sts 0x019C, r24 + cdc: 82 2f mov r24, r18 + cde: 83 70 andi r24, 0x03 ; 3 + ce0: 80 93 91 01 sts 0x0191, r24 + ce4: 80 91 9d 01 lds r24, 0x019D + ce8: 83 34 cpi r24, 0x43 ; 67 + cea: 69 f4 brne .+26 ; 0xd06 + cec: 0e 94 36 03 call 0x66c ; 0x66c + cf0: 81 30 cpi r24, 0x01 ; 1 + cf2: 29 f0 breq .+10 ; 0xcfe + cf4: 80 91 85 01 lds r24, 0x0185 + cf8: 8f 5f subi r24, 0xFF ; 255 + cfa: 80 93 85 01 sts 0x0185, r24 + cfe: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d02: 0e 94 05 01 call 0x20a ; 0x20a + d06: 80 91 9d 01 lds r24, 0x019D + d0a: 84 34 cpi r24, 0x44 ; 68 + d0c: 69 f4 brne .+26 ; 0xd28 + d0e: 0e 94 bf 02 call 0x57e ; 0x57e + d12: 81 30 cpi r24, 0x01 ; 1 + d14: 29 f0 breq .+10 ; 0xd20 + d16: 80 91 85 01 lds r24, 0x0185 + d1a: 81 50 subi r24, 0x01 ; 1 + d1c: 80 93 85 01 sts 0x0185, r24 + d20: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d24: 0e 94 05 01 call 0x20a ; 0x20a + d28: 80 91 9d 01 lds r24, 0x019D + d2c: 82 34 cpi r24, 0x42 ; 66 + d2e: 69 f4 brne .+26 ; 0xd4a + d30: 0e 94 2d 02 call 0x45a ; 0x45a + d34: 81 30 cpi r24, 0x01 ; 1 + d36: 29 f0 breq .+10 ; 0xd42 + d38: 80 91 8c 01 lds r24, 0x018C + d3c: 8f 5f subi r24, 0xFF ; 255 + d3e: 80 93 8c 01 sts 0x018C, r24 + d42: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d46: 0e 94 05 01 call 0x20a ; 0x20a + d4a: 80 91 9d 01 lds r24, 0x019D + d4e: 81 34 cpi r24, 0x41 ; 65 + d50: 91 f4 brne .+36 ; 0xd76 + d52: 0e 94 ad 03 call 0x75a ; 0x75a + d56: 81 30 cpi r24, 0x01 ; 1 + d58: 71 f0 breq .+28 ; 0xd76 + d5a: 80 91 8b 01 lds r24, 0x018B + d5e: 83 30 cpi r24, 0x03 ; 3 + d60: 20 f4 brcc .+8 ; 0xd6a + d62: 8f 5f subi r24, 0xFF ; 255 + d64: 80 93 8b 01 sts 0x018B, r24 + d68: 02 c0 rjmp .+4 ; 0xd6e + d6a: 10 92 8b 01 sts 0x018B, r1 + d6e: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d72: 0e 94 05 01 call 0x20a ; 0x20a + d76: 10 92 9d 01 sts 0x019D, r1 + d7a: 5d cf rjmp .-326 ; 0xc36 + +00000d7c <__udivmodhi4>: + d7c: aa 1b sub r26, r26 + d7e: bb 1b sub r27, r27 + d80: 51 e1 ldi r21, 0x11 ; 17 + d82: 07 c0 rjmp .+14 ; 0xd92 <__udivmodhi4_ep> + +00000d84 <__udivmodhi4_loop>: + d84: aa 1f adc r26, r26 + d86: bb 1f adc r27, r27 + d88: a6 17 cp r26, r22 + d8a: b7 07 cpc r27, r23 + d8c: 10 f0 brcs .+4 ; 0xd92 <__udivmodhi4_ep> + d8e: a6 1b sub r26, r22 + d90: b7 0b sbc r27, r23 + +00000d92 <__udivmodhi4_ep>: + d92: 88 1f adc r24, r24 + d94: 99 1f adc r25, r25 + d96: 5a 95 dec r21 + d98: a9 f7 brne .-22 ; 0xd84 <__udivmodhi4_loop> + d9a: 80 95 com r24 + d9c: 90 95 com r25 + d9e: bc 01 movw r22, r24 + da0: cd 01 movw r24, r26 + da2: 08 95 ret + +00000da4 <__divmodhi4>: + da4: 97 fb bst r25, 7 + da6: 09 2e mov r0, r25 + da8: 07 26 eor r0, r23 + daa: 0a d0 rcall .+20 ; 0xdc0 <__divmodhi4_neg1> + dac: 77 fd sbrc r23, 7 + dae: 04 d0 rcall .+8 ; 0xdb8 <__divmodhi4_neg2> + db0: e5 df rcall .-54 ; 0xd7c <__udivmodhi4> + db2: 06 d0 rcall .+12 ; 0xdc0 <__divmodhi4_neg1> + db4: 00 20 and r0, r0 + db6: 1a f4 brpl .+6 ; 0xdbe <__divmodhi4_exit> + +00000db8 <__divmodhi4_neg2>: + db8: 70 95 com r23 + dba: 61 95 neg r22 + dbc: 7f 4f sbci r23, 0xFF ; 255 + +00000dbe <__divmodhi4_exit>: + dbe: 08 95 ret + +00000dc0 <__divmodhi4_neg1>: + dc0: f6 f7 brtc .-4 ; 0xdbe <__divmodhi4_exit> + dc2: 90 95 com r25 + dc4: 81 95 neg r24 + dc6: 9f 4f sbci r25, 0xFF ; 255 + dc8: 08 95 ret + +00000dca <__udivmodsi4>: + dca: a1 e2 ldi r26, 0x21 ; 33 + dcc: 1a 2e mov r1, r26 + dce: aa 1b sub r26, r26 + dd0: bb 1b sub r27, r27 + dd2: fd 01 movw r30, r26 + dd4: 0d c0 rjmp .+26 ; 0xdf0 <__udivmodsi4_ep> + +00000dd6 <__udivmodsi4_loop>: + dd6: aa 1f adc r26, r26 + dd8: bb 1f adc r27, r27 + dda: ee 1f adc r30, r30 + ddc: ff 1f adc r31, r31 + dde: a2 17 cp r26, r18 + de0: b3 07 cpc r27, r19 + de2: e4 07 cpc r30, r20 + de4: f5 07 cpc r31, r21 + de6: 20 f0 brcs .+8 ; 0xdf0 <__udivmodsi4_ep> + de8: a2 1b sub r26, r18 + dea: b3 0b sbc r27, r19 + dec: e4 0b sbc r30, r20 + dee: f5 0b sbc r31, r21 + +00000df0 <__udivmodsi4_ep>: + df0: 66 1f adc r22, r22 + df2: 77 1f adc r23, r23 + df4: 88 1f adc r24, r24 + df6: 99 1f adc r25, r25 + df8: 1a 94 dec r1 + dfa: 69 f7 brne .-38 ; 0xdd6 <__udivmodsi4_loop> + dfc: 60 95 com r22 + dfe: 70 95 com r23 + e00: 80 95 com r24 + e02: 90 95 com r25 + e04: 9b 01 movw r18, r22 + e06: ac 01 movw r20, r24 + e08: bd 01 movw r22, r26 + e0a: cf 01 movw r24, r30 + e0c: 08 95 ret + +00000e0e <_exit>: + e0e: f8 94 cli + +00000e10 <__stop_program>: + e10: ff cf rjmp .-2 ; 0xe10 <__stop_program> diff --git a/compiled.map b/compiled.map new file mode 100644 index 0000000..7569405 --- /dev/null +++ b/compiled.map @@ -0,0 +1,434 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + tetris.o (__udivmodhi4) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + tetris.o (__divmodhi4) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + tetris.o (__udivmodsi4) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o (exit) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + tetris.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + tetris.o (__do_clear_bss) + +Allocating common symbols +Common symbol size file + +screen 0x9 tetris.o +prewRandomDigit 0x1 tetris.o +oldu 0x1 tetris.o +u 0x1 tetris.o + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o +LOAD tetris.o +LOAD /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0xe12 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x00000068 . = ALIGN (0x2) + 0x00000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000068 0x0 linker stubs + *(.trampolines*) + 0x00000068 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000068 __ctors_start = . + *(.ctors) + 0x00000068 __ctors_end = . + 0x00000068 __dtors_start = . + *(.dtors) + 0x00000068 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000068 0x0 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + 0x00000068 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000068 0xc /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000074 0x16 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + 0x00000074 __do_copy_data + .init4 0x0000008a 0x10 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + 0x0000008a __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000009a 0x8 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + *(.init9) + *(.text) + .text 0x000000a2 0x4 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + 0x000000a2 __vector_22 + 0x000000a2 __vector_1 + 0x000000a2 __vector_24 + 0x000000a2 __vector_12 + 0x000000a2 __bad_interrupt + 0x000000a2 __vector_6 + 0x000000a2 __vector_3 + 0x000000a2 __vector_23 + 0x000000a2 __vector_25 + 0x000000a2 __vector_11 + 0x000000a2 __vector_13 + 0x000000a2 __vector_17 + 0x000000a2 __vector_19 + 0x000000a2 __vector_7 + 0x000000a2 __vector_5 + 0x000000a2 __vector_4 + 0x000000a2 __vector_9 + 0x000000a2 __vector_2 + 0x000000a2 __vector_21 + 0x000000a2 __vector_15 + 0x000000a2 __vector_8 + 0x000000a2 __vector_14 + 0x000000a2 __vector_10 + 0x000000a2 __vector_16 + 0x000000a2 __vector_20 + .text 0x000000a6 0xcd6 tetris.o + 0x000000a6 setRXCIE_USART0 + 0x000000b2 init_USART0 + 0x000000cc receive_1byte_USART0 + 0x000000da transmit_1byte_USART0 + 0x000000ea __vector_18 + 0x0000011e transmit_str_USART0 + 0x00000138 transmit_4digit_USART0 + 0x00000194 delay_ms + 0x000001d0 delay_ns + 0x0000020a beep + 0x00000272 bleepBleepSound + 0x000002e4 putByte + 0x00000318 maxOne + 0x00000372 moveLine + 0x000003a6 redrawScreen + 0x0000045a checkDown + 0x000004ec checkStart + 0x0000057e checkLeft + 0x0000066c checkRight + 0x0000075a checkTurn + 0x00000820 checkFullLine + 0x0000095e gameOver + 0x00000ad6 stopFigure + 0x00000b8c main + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + 0x00000d7c . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000d7c 0x28 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + 0x00000d7c __udivmodhi4 + .text.libgcc 0x00000da4 0x26 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + 0x00000da4 __divmodhi4 + 0x00000da4 _div + .text.libgcc 0x00000dca 0x44 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + 0x00000dca __udivmodsi4 + .text.libgcc 0x00000e0e 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000e0e 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000e0e 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + 0x00000e0e . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000e0e 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + 0x00000e0e exit + 0x00000e0e _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000e0e 0x4 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000e12 _etext = . + +.data 0x00800100 0x8a load address 0x00000e12 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + .data 0x00800100 0x8a tetris.o + 0x00800127 max7219_reg_digit0 + 0x00800128 max7219_reg_digit1 + 0x00800129 max7219_reg_digit2 + 0x0080012a max7219_reg_digit3 + 0x0080012b max7219_reg_digit4 + 0x0080012c max7219_reg_digit5 + 0x0080012d max7219_reg_digit6 + 0x0080012e max7219_reg_digit7 + 0x0080012f max7219_reg_decodeMode + 0x00800130 max7219_reg_intensity + 0x00800131 max7219_reg_scanLimit + 0x00800132 max7219_reg_shutdown + 0x00800133 max7219_reg_displayTest + 0x00800134 figure + 0x00800184 currentFigure + 0x00800185 currentX + 0x00800186 score + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x0080018a . = ALIGN (0x2) + 0x0080018a _edata = . + 0x0080018a PROVIDE (__data_end, .) + +.bss 0x0080018a 0x14 + 0x0080018a PROVIDE (__bss_start, .) + *(.bss) + .bss 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + .bss 0x0080018a 0x8 tetris.o + 0x0080018a max7219_reg_noop + 0x0080018b currentTurn + 0x0080018c currentY + 0x0080018d timer + 0x00800191 randomDigit + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + COMMON 0x00800192 0xc tetris.o + 0x00800192 screen + 0x0080019b prewRandomDigit + 0x0080019c oldu + 0x0080019d u + 0x0080019e PROVIDE (__bss_end, .) + 0x00000e12 __data_load_start = LOADADDR (.data) + 0x00000e9c __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0080019e 0x0 + 0x0080019e PROVIDE (__noinit_start, .) + *(.noinit*) + 0x0080019e PROVIDE (__noinit_end, .) + 0x0080019e _end = . + 0x0080019e PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x6b4 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + +.stabstr 0x00000000 0x54 + *(.stabstr) + .stabstr 0x00000000 0x54 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges + *(.debug_aranges) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info + *(.debug_info) + *(.gnu.linkonce.wi.*) + +.debug_abbrev + *(.debug_abbrev) + +.debug_line + *(.debug_line) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(compiled.elf elf32-avr) +LOAD linker stubs diff --git a/flash168 b/flash168 new file mode 100755 index 0000000..0d33d9d --- /dev/null +++ b/flash168 @@ -0,0 +1,10 @@ +#!/bin/bash + +# flashing script for Arduino bootloader (working via USB) + +CONF="/home/dmitry/Projects/Arduino/arduino-0011/hardware/tools/avrdude.conf" +DUDE="/home/dmitry/Projects/Arduino/arduino-0011/hardware/tools/avrdude" + +sudo $DUDE -C $CONF -p m168 -U flash:w:compiled.hex -c stk500v1 -P /dev/ttyUSB0 -b 19200 -D +//avrdude -p m168 -P /dev/ttyUSB0 -c stk500v1 -b 19200 -F -u -U flash:w:blink.hex + diff --git a/make b/make new file mode 100755 index 0000000..b49b0c9 --- /dev/null +++ b/make @@ -0,0 +1,17 @@ +#!/bin/bash + +rm -f compiled.hex compiled.lss compiled.eep compiled.elf compiled.map *.d *.o + +# -DBOARD=1 +export DEFINES="-mmcu=atmega168 -D F_CPU=4000000UL" + +avr-gcc $DEFINES -Wall -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums tetris.o -c tetris.c +avr-gcc $DEFINES -Wl,-Map=compiled.map tetris.o -o compiled.elf + +avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature compiled.elf compiled.hex +avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex compiled.elf compiled.eep +avr-objdump -h -S compiled.elf > compiled.lss +avr-objdump -h -d compiled.elf > compiled.lst +rm -f *.o + +exit diff --git a/tetris.c b/tetris.c new file mode 100644 index 0000000..46cea34 --- /dev/null +++ b/tetris.c @@ -0,0 +1,629 @@ +/* + * TETRIS for AVR microcontrollers and cascading LED matrix based on MAX7219 driver + * Copyright (C) 2010 Dmitry Shalnov [interplaymedium.org] + * test it with "screen /dev/ttyUSB0" comand (control by kbd arrows) + * created for Interplaymedium™ AXON project + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include + +// WIRING +// please change it according to your ARDUINO wiring +// don't forget to place pull-up resisor between RESET and +5V pins to avoid board reset during UART transfer. + +#define DATAIN 3 +#define LOAD 5 +#define CLOCK 4 +#define BEEPER 2 + +#define INUSE 1 // how many matrix you connect +#define STARTX 4 // horisontal position od figure strat +#define RAND_MAX 4 + +// Some macros that make the code more readable + +#define output_low(port,pin) port &= ~(1<'0') + u = c; +} + +// --------------------------------------------- Transmit String Data ------------------------------------------------- + +void transmit_str_USART0 (char *str) { + while (*str != 0) { + transmit_1byte_USART0(*str); + *str++; + } +} + +// --------------------------------------------- Transmit Four-Digit Integer ------------------------------------------ + +void transmit_4digit_USART0 (int num) { + unsigned char temp; + int digit = 1000; + + while (digit != 0) { + temp = num / digit; + transmit_1byte_USART0('0'+temp); + num -= (digit*temp); + digit /= 10; + } +} + +// --------------------------------------------- Delays -------------------------------------------------------------- + +void delay_ms (uint16_t ms) { + uint16_t delay_count = FOSC / 17500 * 0.1; + volatile uint16_t i; + while (ms != 0) { + for (i=0; i != delay_count; i++); + ms--; + } +} + +void delay_ns(uint16_t ms) { + uint16_t delay_count = FOSC / 17500 * 0.01; + volatile uint16_t i; + while (ms != 0) { + for (i=0; i != delay_count; i++); + ms--; + } +} + +// --------------------------------------------- Sounds ------------------------------------------------------------- + +void beep (){ + for(uint8_t a=0; a<100; a++){ + output_high(PORTB, BEEPER); + delay_ms(1); + output_low(PORTB, BEEPER); + delay_ms(1); + } +} + +void bleepBleepSound (){ + uint8_t a, b; + for(b=1; b<40; b+=10) for(a=0; a<100; a++){ + output_high(PORTB, BEEPER); + delay_ns(b); + output_low(PORTB, BEEPER); + delay_ns(b); + } +} + +// --------------------------------- LED MATRIX code --------------------------------------------------------------- + +// define max7219 registers +uint8_t max7219_reg_noop = 0x00; +uint8_t max7219_reg_digit0 = 0x01; +uint8_t max7219_reg_digit1 = 0x02; +uint8_t max7219_reg_digit2 = 0x03; +uint8_t max7219_reg_digit3 = 0x04; +uint8_t max7219_reg_digit4 = 0x05; +uint8_t max7219_reg_digit5 = 0x06; +uint8_t max7219_reg_digit6 = 0x07; +uint8_t max7219_reg_digit7 = 0x08; +uint8_t max7219_reg_decodeMode = 0x09; +uint8_t max7219_reg_intensity = 0x0a; +uint8_t max7219_reg_scanLimit = 0x0b; +uint8_t max7219_reg_shutdown = 0x0c; +uint8_t max7219_reg_displayTest = 0x0f; + + +void putByte(uint8_t data) { + uint8_t i = 8; + uint8_t mask; + while(i > 0) { + mask = 0x01 << (i - 1); // get bitmask + //digitalWrite( CLOCK, LOW); // tick + output_low(PORTB, CLOCK); // tick + if (data & mask){ // choose bit + //digitalWrite(DATAIN, HIGH);// send 1 + output_high(PORTB, DATAIN); + } else { + //digitalWrite(DATAIN, LOW); // send 0 + output_low(PORTB, DATAIN); + } + //digitalWrite(CLOCK, HIGH); // tock + output_high(PORTB, CLOCK); + --i; // move to lesser bit + } +} + +void maxOne(uint8_t maxNr, uint8_t reg, uint8_t col) { + //maxOne is for adressing different MAX7219's, + //whilele having a couple of them cascaded + int c = 0; + //digitalWrite(load, LOW); // begin + output_low(PORTB, LOAD); + + for ( c = INUSE; c > maxNr; c--) { + putByte(0); // means no operation + putByte(0); // means no operation + } + + putByte(reg); // specify register + putByte(col);//((data & 0x01) * 256) + data >> 1); // put data + + for ( c = maxNr-1; c >= 1; c--) { + putByte(0); // means no operation + putByte(0); // means no operation + } + + //digitalWrite(load, LOW); // and load da shit + output_low(PORTB, LOAD); + //digitalWrite(load,HIGH); + output_high(PORTB, LOAD); +} + +/* +void putPixel (uint8_t maxNr, uint8_t x, uint8_t y){ + //maxOne is for adressing different MAX7219's, + //whilele having a couple of them cascaded + + int c = 0; + //digitalWrite(load, LOW); // begin + output_low(PORTB, LOAD); + + for ( c = INUSE; c > maxNr; c--) { + putByte(0); // means no operation + putByte(0); // means no operation + } + + putByte(y); // specify register + putByte(0x01 << (8-x));//((data & 0x01) * 256) + data >> 1); // put data + + for ( c = maxNr-1; c >= 1; c--) { + putByte(0); // means no operation + putByte(0); // means no operation + } + + //digitalWrite(load, LOW); // and load da shit + output_low(PORTB, LOAD); + //digitalWrite(load,HIGH); + output_high(PORTB, LOAD); +} +*/ + +// --------------------------------- Figures ---------------------------------------------------------------------- + +uint8_t figure[5][4][4] = { + { + { + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000 + } + }, + { + { + 0b00110000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00110000, + 0b00100000, + 0b00000000 + }, + { + 0b00110000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00110000, + 0b00100000, + 0b00000000 + } + }, + { + { + 0b00000000, + 0b00111000, + 0b00001000, + 0b00000000 + }, + { + 0b00011000, + 0b00010000, + 0b00010000, + 0b00000000 + }, + { + 0b00100000, + 0b00111000, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00010000, + 0b00110000, + 0b00000000 + } + }, + { + { + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00110000, + 0b00010000, + 0b00000000 + }, + { + 0b00000000, + 0b00111000, + 0b00010000, + 0b00000000 + }, + { + 0b00010000, + 0b00011000, + 0b00010000, + 0b00000000 + } + }, + { + { + 0b00000000, + 0b00111100, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000 + }, + { + 0b00000000, + 0b00111100, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000 + } + } + }; + + +// ----------------------------------------- Init variables ------------------------------------------------------------ + +uint8_t screen[ INUSE*8 + 1 ]; + +uint8_t currentFigure = 4; +uint8_t currentTurn = 0; +uint8_t currentY = 0; +uint8_t currentX = STARTX; +uint32_t timer = 0; +uint8_t randomDigit = 0; +uint8_t prewRandomDigit; +uint8_t score = 1; + +// ------------------------------------------ Game logic --------------------------------------------------------------- + +uint8_t moveLine(uint8_t L, uint8_t X){ + if (X <= 4 ) L <<= 4 - X; else L >>= X - 4; + return L; +} + +void redrawScreen (void) { + uint8_t lineToPlace = 0b00000000; + for (uint8_t matrix=0; matrix < INUSE; matrix++) for (uint8_t line=0; line<8; line++){ + if (matrix*8 + line >= currentY && matrix*8 + line < currentY+4) lineToPlace = figure[currentFigure][currentTurn][matrix*8 +line - currentY]; else lineToPlace = 0b00000000; + //lineToPlace = 0b11111111; else lineToPlace = 0b00000000; + //if (currentX <= 4 ) lineToPlace <<= 4 - currentX; else lineToPlace >>= currentX - 4; + lineToPlace = moveLine(lineToPlace, currentX); + maxOne(matrix+1, line+1, screen[matrix*8 + line] | lineToPlace ); + } +} + +uint8_t checkDown (void){ + uint8_t lineToPlace = 0b00000000; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][currentTurn][line]; + lineToPlace = moveLine(lineToPlace, currentX); + if ( (lineToPlace & screen[ currentY+1 + line]) != 0) return 1; + } + return 0; +} + +uint8_t checkStart (void){ + uint8_t lineToPlace = 0b00000000; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][currentTurn][line]; + lineToPlace = moveLine(lineToPlace, currentX); + if ( (lineToPlace & screen[ currentY + line]) != 0) return 1; + } + return 0; +} + +uint8_t checkLeft (void){ + uint8_t lineToPlace = 0b00000000; + uint8_t tmpLineToPlace; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][currentTurn][line]; + tmpLineToPlace = moveLine(lineToPlace, currentX); + if ( (tmpLineToPlace & 0b10000000) != 0) return 1; + lineToPlace = moveLine(lineToPlace, currentX - 1); + if ( (lineToPlace & screen[ currentY + line]) != 0) return 1; + } + return 0; +} + +uint8_t checkRight (void){ + uint8_t lineToPlace = 0b00000000; + uint8_t tmpLineToPlace; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][currentTurn][line]; + tmpLineToPlace = moveLine(lineToPlace, currentX); + if ( (tmpLineToPlace & 0b00000001) != 0) return 1; + lineToPlace = moveLine(lineToPlace, currentX + 1); + if ( (lineToPlace & screen[ currentY + line]) != 0) return 1; + } + return 0; +} + +uint8_t checkTurn (void){ + uint8_t lineToPlace = 0b00000000; + uint8_t testTurn; + if (currentTurn < 3) testTurn = currentTurn + 1; else testTurn = 0; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][testTurn][line]; + lineToPlace = moveLine(lineToPlace, currentX); + //if ( (lineToPlace & 0b00000001) != 0) return 1; + if (currentFigure == 1 && currentX == 8) return 1; + if (currentFigure == 2 && currentX == 1) return 1; + if (currentFigure == 2 && currentX == 8) return 1; + if (currentFigure == 3 && currentX == 1) return 1; + if (currentFigure == 3 && currentX == 8) return 1; + if (currentFigure == 4 && currentX == 2) return 1; + if (currentFigure == 4 && currentX == 7) return 1; + if ( (lineToPlace & screen[ currentY + line]) != 0) return 1; + } + return 0; +} + +void checkFullLine (void) { + uint8_t a = 0; + uint8_t matrix = currentY / (INUSE*8); + uint8_t remainder = currentY % (INUSE*8); + for (uint8_t line = 0; line<4; line ++) if (line + currentY < INUSE*8) { + if (screen[line + currentY] == 0b11111111) { + for (a = 0; a<3; a++) { + + maxOne(matrix + 1, line + remainder +1, 0b00000000 ); + //screen[line + currentY] = 0b11111111; + //redrawScreen (); + delay_ms(1000); + maxOne(matrix + 1, line + remainder +1, 0b11111111 ); + //screen[line + currentY] = 0b00000000; + //redrawScreen (); + delay_ms(1000); + } + for (a = line + currentY; a>0; a--) screen[a] = screen[a-1]; + bleepBleepSound (); + transmit_str_USART0("Score: "); + transmit_4digit_USART0(score++); + transmit_str_USART0(" \r"); + } + } +} + +void gameOver () { + uint8_t ornament[3] = {0b00100100, 0b10010010, 0b01001001}; + uint8_t offset = 0; + for (uint8_t matrix=0; matrix < INUSE; matrix++) for (uint8_t line=0; line<8; line++){ + maxOne(matrix + 1, line + 1, 0b11111111 ); + delay_ms(500); + } + for (uint8_t matrix=0; matrix < INUSE; matrix++) for (uint8_t line=0; line<8; line++){ + maxOne(matrix + 1, line + 1, 0b00000000 ); + screen[ matrix*8 + line] = 0b00000000; + delay_ms(500); + } + + while (u == 0) { + for (uint8_t matrix=0; matrix < INUSE; matrix++) for (uint8_t line=0; line<8; line++){ + maxOne(matrix + 1, line + 1, ornament[(line+offset) % 3] ); + } + if (offset < 2) offset ++; else offset = 0; + delay_ms(1000); + } + + score = 1; + transmit_str_USART0("Score: 0000 \r"); + + currentFigure = (uint8_t)((uint16_t)timer % (uint16_t)5); + currentTurn = 0; + +} + +void stopFigure (void) { + uint8_t lineToPlace = 0b00000000; + for (uint8_t line = 0; line<4; line ++) { + lineToPlace = figure[currentFigure][currentTurn][line]; + lineToPlace = moveLine(lineToPlace, currentX); + screen[line + currentY] |= lineToPlace; + } + checkFullLine (); + currentY = 0; + currentTurn = 0; + currentX = STARTX; + currentFigure = randomDigit; + + if (checkStart () != 1) redrawScreen (); else gameOver(); +} + +// --------------------------------- MAIN ----------------------------------------------------------------------- + +int main(void) { + + // initialize the direction of PORTD to be output + + set_output(DDRB, DATAIN); + set_output(DDRB, LOAD); + set_output(DDRB, CLOCK); + set_output(DDRB, BEEPER); + + // initiation of the max 7219 + for (uint8_t matrix=0; matrix < INUSE; matrix++) { + maxOne(matrix+1, max7219_reg_scanLimit, 0x07); + maxOne(matrix+1, max7219_reg_decodeMode, 0x00); // using a led matrix, not digits + maxOne(matrix+1, max7219_reg_shutdown, 0x01); // not in shutdown mode + maxOne(matrix+1, max7219_reg_displayTest, 0x00); // no display test + for (uint8_t line=0; line<8; line ++) maxOne(matrix+1, line+1, 0); // empty registers, turn all LEDs off + maxOne(matrix+1, max7219_reg_intensity, 0x0f & 0x0f); // the first 0x0f is the value you can set (range: 0x00 to 0x0f) + } + + init_USART0(UBRR); // initialize USART0 + setRXCIE_USART0(); + sei(); + + screen[ INUSE*8 ] = 0b11111111; // bottom border for checking + currentFigure = (uint8_t)((uint16_t)timer % (uint16_t)RAND_MAX); + transmit_str_USART0("Score: 0000 \r"); + + while (1) { + if (timer % 20000 == 0) { + redrawScreen (); + if (checkDown() != 1) currentY ++; else { + if (prewRandomDigit == randomDigit) randomDigit++; + if (randomDigit > RAND_MAX+1) randomDigit = 0; + prewRandomDigit = randomDigit; + stopFigure (); + } + } + timer ++; + if (u != oldu){ + oldu = u; + randomDigit = (uint8_t)((uint16_t)timer % (uint16_t)RAND_MAX); + //transmit_1byte_USART0(timer); + //transmit_4digit_USART0(u); + if (67 == u) { + //transmit_str_USART0(" RIGHT \r"); + if (checkRight () != 1) currentX ++; + redrawScreen (); + beep (); + } + if (68 == u) { + //transmit_str_USART0(" LEFT \r"); + if (checkLeft () != 1) currentX --; + redrawScreen (); + beep (); + } + if (66 == u) { + //transmit_str_USART0(" DOWN \r"); + if (checkDown() != 1) currentY ++; + redrawScreen (); + beep (); + } + if (65 == u) { + //transmit_str_USART0(" UP \r"); + if (checkTurn () != 1) { + if (currentTurn < 3) currentTurn ++; else currentTurn = 0; + redrawScreen (); + beep (); + } + } + u = 0; + } + } + +} +